在下面的代码:指针操作,内存扫描
#include <stdio.h>
int main(int argc,char** argv)
{
char *str = "Hello world";
char *p = &argc+1;
printf("%i \n",(&argc+1));
printf("%i \n",*(&argc+1));
printf("%i \n",&str);
printf("%i \n",*str);
printf("%i \n",p);
printf("%i \n",*p);
return 0;
}
输出是:
-541685632
4196028
-541685632
72
-541685632
-68
我的问题是,因为它们都指向同一个地址怎么来的,他们都指向了什么以不同的价值;
注意:您应该使用'%p'来显示指针值。 –
更重要的是,'(&argc + 1)'不是获取'argv'的有效方法。你的程序调用未定义的行为。如果您想了解发生的事情,请查看生成的汇编器。但是这通常不会告诉你C的行为。 –
其实对我来说'(&argc + 1)'导致崩溃:-O –