在下面的代碼:指針操作,內存掃描
#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 –