__Cm_duck 2014年01月07日
求指导C语言中可变参数宏的知识
void va_test(char* a, char* b, char* c, …)//省略了一些代码
va_start(ap, c);//此时ap应该指向c后面的第一个可变参数,为什么我用printf("%s", ap);输出不了,ap不是已经指向那个可变参数了吗?求详解!!!
#define va_start(ap, v) (ap = (va_list)&(v) + _INTSIZEOF(v))
&v对这个函数而言不就是二级指针吗?为什么用到二级指针,直接去v的地址加上v的内存大小不照样得到v后面一个参数的地址吗?而用二级指针的话我调试了还不是那个地址,疑惑!
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) 这句前面*(t *)有什么意义?先强制转成二级指针再转为一级指针的作用是什么?
...全文
121 点赞 收藏 11
写回复
11 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告