main(){int i;int a[10];int *p=a;for(i=0;i<10:i++)????{????*p=i+1;printf("a[%d]=%d\n",i,*p);p++;????}}?*p=i+1; 我理解是把i+1賦值給數組a,但不能理解作用是什么。想問這一語句大家怎么理解?作用和含義是什么?
6 回答

凌小天3635910
TA貢獻17條經驗 獲得超13個贊
main() { ????int?i;????????????????//創建控制變量i ????int?a[10];????????????//創建整形數組a,大小為10 ????int?*p=a;?????????????//創建整形指針p,并將數組a的首地址賦值給p ????for(i=0;i<10;i++)?????//建立一個循環,次數為10次 ????{ ????????*p=i+1;???????????//向p所在的地址賦值,值的大小為i+1 ????????printf("a[%d]=%d\n",i,*p);????????//輸出數組標號和對應值 ????????p++;??????????????//讓p指向下一個地址 ????} }????????????????????????//整個過程就是對數組a賦值1~10;。
輸出結果為:
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;

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

Yexiaomo
TA貢獻152條經驗 獲得超157個贊
因為 int *p = a ;? ?// 等價于 int *p = &a[0];
//?p 指向 數組 a[10] 的 首地址 也就是 a , 也就是 a[0] 的地址
*p = i +1 ; //等價于 a[0] = i +1; ? ? ? ? ?( ?*?號的意義 應該知道吧)
p++; //因為數組的地址是連續的, 所以 p++ 使 p 指向了 數組下一個元素的地址;也就是 a[1];
以此類推
- 6 回答
- 0 關注
- 2198 瀏覽
添加回答
舉報
0/150
提交
取消