c语言指针问题求解

c语言指针问题求解下面是写一个自己的printf函数,暂时只写出这一部分和我问题有关的代码。print("%d%d%c%c%s%s",10,20,'a','b',"thi... c语言指针问题求解下面是写一个自己的printf函数,暂时只写出这一部分和我问题有关的代码。
print("%d %d %c %c %s %s", 10, 20, 'a', 'b', "this", "text");
void print(char *pformat, ...)
{
char *pStr = pformat;
int *pTemp = (int *)&pformat;
。。。。。。。。
}
*pStr指针用来指向参数"%d %d %c %c %s %s"的首地址,但是int *pTemp = (int *)&pformat;(强制转化为整形)是如何让*pTemp指向后面的参数10, 20, 'a', 'b', "this", "text"的?求解.
展开
 我来答
itunes0004
2018-04-07 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:504万
展开全部
第一 、pTemp 不可能指向 指向后面的参数10, 20, 'a', 'b', "this", "text"。
第二、pTemp应该是用于分析 pformat本身指向的字符串,如果发现比如 %d, 就从堆栈pop并当成一个整数 , 以此类推。
第三、根据调用约定的不同,比如stdcall, fastcall等等,程序 print已经知道所有的参数会以何种方式读取。所以print只需要根据pformat的内容来读取对应参数就可以了。
第四、这种可变参数的极有可能是 stdcall, 由主调函数负责退栈操作。所以print只需要直接访问堆栈的内存就可以了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式