引用一個數組元素的方法
以下是程序
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,但不能理解作用是什么。想問這一語句大家怎么理解?作用和含義是什么?
以下是程序
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,但不能理解作用是什么。想問這一語句大家怎么理解?作用和含義是什么?
2016-08-15
舉報
2016-08-19
謝謝解答,現已弄明白了
2016-08-16
提問: *p=i+1; 我理解是把i+1賦值給數組a,但不能理解作用是什么。想問這一語句大家怎么理解?作用和含義是什么?
回答:
首先理解符號的意思,*p有一層隱喻含義,暗示p的類型并不是普通變量,而是“內存地址”類型(內存地址類型的存儲在32位機器中占4個字節,64位機器占8個字節),所以p是地址(比如0x7fffffffdde0),而*p代表到0x7fffffffdde0這個內存地址去取這個地址上存的值。
現在把i+1(假設i=4,那么i+1=5)的值5,保存到地址p(0x7fffffffdde0)上,也就意味著以后去p這個地址讀取變量值得話,就會讀到5。