为什么要打印12?能把问题说的清楚点嘛?
将所有传入的参数全部打印出来 ?
int push_test(const char *format, ...)
{
char *p = (char *)&format;
int i;
printf("arg1: %s\n", format);
p = p + sizeof(char *);
i = *((int *)p);
printf("arg2 : %d\n", i);
return 0;
}
int main()
{
push_test("a",37);
return 0;
}
最终的结果输出为
arg1:a
arg2的值是一个随机值
尝试打印format的地址和p的地址。p的确指向了format的地址:
format address = 0x7fff528453f8
p address = 0x7fff528453f8
然后p的新地址为:
p new address = 0x7fff52845400
i的地址为:
i address = 0x7fff52845404
通过gdb调试,p的地址是format的地址,没有指向a的地址,但是foramt变量里存的是a的地址。搞不懂了!!!!!
(猜测:因为课程是说在x86平台上,函数调用参数是是使用堆栈实现的,因而出现这种问题???)
请教走在前面的前辈!!!!感谢
- 点赞
- 写回答
- 关注问题
- 收藏
- 复制链接分享
- 邀请回答
1条回答
为你推荐
- python如何将函数的参数传递给它的装饰器
- python
- 1个回答
- 将所有传入的参数全部打印出来 ?
- c语言
- 1个回答
- python2.7传递列表参数时内部的中文元素被编码,请问怎么正常显示呢?
- python
- 1个回答
- 使用pyqt的combobox时,自定义的槽函数使用时没有参数传入,值却改变了?
- python
- 2个回答
- 链表操作中即使函数传入的是链表指针,若根节点没有改变,链表也会改变?
- c++
- 1个回答
- python函数,形参不确定的情况下,传入一个列表。只循环一次,是为什么?
- python
- 2个回答
- 使用python命令行参数,如何向脚本传递一个tuple或者list啊 ?
- python
- 0个回答
- springmvc日期参数绑定为null
- spring
- 0个回答
- URLConnection传递参数后的问题
- 0个回答
- 用javascript传递中文参数,但javascript里面的编码是:ISO8859_1
- javascript
- 0个回答
- 如何理解Python中的类没有实现init方法,但是实例化的时候却可以传参数进去,具体代码如下
- linux自动执行脚本和收集原本打印的结果?
- linux
- 6个回答
- 同一条SQL语句,myBatis查出来的数据和Navicat查出来的数据不同
- 来回答都有分 --- javascript怎么自动将第一个函数的返回值作为第二个函数的参数
- javascript
- 14个回答
- 请问微信的wx.config参数怎么获得?越详细越好
- 微信
- 2个回答
- mybatis传值到XML里面,为什么参数类型是HashMap可以获取到参数值,Map就不行?
- xml
- 6个回答
- 指针函数参数传递问题
- 3个回答
- js方法中参数为字符串时,打印出来为object HTMLInputElement,如何解决?
- java
- javascript
- 4个回答
- java如何将输出在控制台的数据输出在textarea中
- 2个回答
- 传递参数调用exe,SHELLEXECUTEINFO里的lpParameters怎么设置?
- c++
- 3个回答