数组中a和&a的区别
最近在看C语言深入一点方面的书,感觉指针和数组的关系有很大要理解的地方。偶尔看到有人写了关于指针和数组的长篇大论。直觉告诉我那是一篇好文章。一定是那位高手几年来实践和琢磨的成果。如果能达到他理解的那种水平,那我的C语言又会上一个台阶。但是为了能有深刻的体会,我先不看他得文章,自己先琢磨一下。
int a[5]={0,1,2,3,4}
int *p1=a; //将p1定义为指向数组a首元素的首地址,而不是指向数组a的地址,虽然值一样,意义不一样
a+i不等于&a+i
a+i==a+i*sizeof(a[0])而&a+i=a+i*sizeof(a)
下面程序的运行结果为? www.2cto.com
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[5];
int *p1=a;
int *p2=&a;
printf("%p/n",a);
printf("%p/n",a+1);
printf("%p/n",&a+1);
system("PAUSE");
return 0;
}
在我的机子上运行结果为:0022FF20
0022FF24
0022FF34
摘自 雷格码