6 回答

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超8個(gè)贊
p指的是數(shù)組a的首地址,*p指的是a[0],p++就是數(shù)組后一個(gè)元素的地址,*p就變成a[1]依次類推。學(xué)匯編數(shù)組運(yùn)用就懂深了。

TA貢獻(xiàn)17條經(jīng)驗(yàn) 獲得超13個(gè)贊
main() { ????int?i;????????????????//創(chuàng)建控制變量i ????int?a[10];????????????//創(chuàng)建整形數(shù)組a,大小為10 ????int?*p=a;?????????????//創(chuàng)建整形指針p,并將數(shù)組a的首地址賦值給p ????for(i=0;i<10;i++)?????//建立一個(gè)循環(huán),次數(shù)為10次 ????{ ????????*p=i+1;???????????//向p所在的地址賦值,值的大小為i+1 ????????printf("a[%d]=%d\n",i,*p);????????//輸出數(shù)組標(biāo)號(hào)和對(duì)應(yīng)值 ????????p++;??????????????//讓p指向下一個(gè)地址 ????} }????????????????????????//整個(gè)過(guò)程就是對(duì)數(shù)組a賦值1~10;。
輸出結(jié)果為:
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;
a[5]=6;
a[6]=7;
a[7]=8;
a[8]=9;
a[9]=10;

TA貢獻(xiàn)6條經(jīng)驗(yàn) 獲得超5個(gè)贊
最后的結(jié)果也就是a[0]=1,a[1]=2……
這里p是一個(gè)指向數(shù)組首地址的指針,所以*p=i+1的意思就是a[0]=i+1,要知道a就代表的是數(shù)組的首地址,也就是說(shuō)數(shù)組名就是數(shù)組首地址,由于數(shù)組在內(nèi)存中的空間是連續(xù)的,所以,p++就代表p這個(gè)指針依次指向數(shù)組的下一個(gè)元素,也就是說(shuō)這個(gè)程序用p這個(gè)指針依次指向數(shù)組每一個(gè)元素,然后每個(gè)元素都被依次賦值為i+1。
這樣說(shuō)請(qǐng)問(wèn)你聽懂了嗎?

TA貢獻(xiàn)152條經(jīng)驗(yàn) 獲得超157個(gè)贊
因?yàn)?strong> int *p = a ;? ?// 等價(jià)于 int *p = &a[0];
//?p 指向 數(shù)組 a[10] 的 首地址 也就是 a , 也就是 a[0] 的地址
*p = i +1 ; //等價(jià)于 a[0] = i +1; ? ? ? ? ?( ?*?號(hào)的意義 應(yīng)該知道吧)
p++; //因?yàn)閿?shù)組的地址是連續(xù)的, 所以 p++ 使 p 指向了 數(shù)組下一個(gè)元素的地址;也就是 a[1];
以此類推
- 6 回答
- 0 關(guān)注
- 2190 瀏覽
添加回答
舉報(bào)