C語言的指標問題

2023-01-08 12:30:53 字數 1032 閱讀 1332

1樓:匿名使用者

我比較奇怪你這個程式是幹什麼的

for(i=0;i<10;i++)

*p++=i;

這一句純粹的是無用功呀,就算是延時也不這樣用吧這句話中*p++就是*(p++)的,當這個for迴圈結束之後p已經指向a[10]陣列末尾了,這個for迴圈中p是要自加9次的

在第一個程式中,上一for完了之後直接

for(i=0;i<10;i++)

printf("a[%d]=%d\n",i,*p++);

*p++這個p本來就向指的a[10]末尾的地址了,你還*p++,指標都指向陣列之外了,當然不可以了

所有p=a;這句是很必要的

*p++和(*p)++是不一樣了

2樓:匿名使用者

不是「一定要再加上p=&a才能正確的『得出』數值」,是「一定要再加上p=&a才能正確的『列印出』數值」。

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

*p++=i;

截止到這裡已經給陣列a正確賦值了,後面的部分p=a;

for(i=0;i<10;i++)

printf("a[%d]=%d\n",i,*p++);

是讓p回到陣列a的首地址,這樣是為了正確列印,如果沒有下面這一句p=a;

直接for(i=0;i<10;i++)

printf("a[%d]\n",i);

也是可以正確輸出結果的。

3樓:傲世修羅王

大哥,在下眼神不太好,找了半天也沒發現你的**裡面有p=&a,請明示!

4樓:淺倚深微

那是因為在第一個for迴圈那裡*p++=i;這一句話改變了p的指向

該for迴圈完了以後p指向最後一個值a[9].

加上p=a後,又讓p重新指向陣列a[10]的第一個位置 a,也就是a[0]

5樓:匿名使用者

因為第一個執行*p++後指標跑到了陣列的最後去了

c語言的指標問題,C語言的指標問題

printf c p 3 分佈來看,c是要列印輸出一個字元。p指向那個字元陣列,p就是字元 a 那麼 a 3是多少呢,a 1是b 2 是c 3 是d注意是 p 3 而不是 p 3 這是由區別的。是的。p 3。是對p指向的那個值加3,p開始是指向a的,故a加3後就是d了 而p 執行3次的話,是指標p本...

c語言指標的賦值問題C語言指標的賦值問題

指標在用要注意初始化,例如 int p p為指標,地址是未知的,如果直接賦值 p a 這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。可以int p a 或者int p p a 然後再...

C語言指標問題,求教大神C語言指標的問題搞不懂求大神指教

include include include include include static char chongpai char static int pare const void const void static int allocateintegerarr const char size ...