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 ...