定义数组a[ ],为什么int *p=&a[0];等于int *p; p=&a[0];

如果
int a;
int *p;
p=&a;
*p=a;
这里的指针变量p放的是a的地址,*p就是指a的内容,如果上式成立,那么关于这个如果写成int *p=&a就不对了?为什么
感觉是*p放的是内容,int *p=&a[0];根据优先级,好像应该是说把a[ ]的地址给*p,就是说p里面放的是a[ ]
地址的地址,而*p则等于a[]的地址!

一个是声明时初始化,一个是先声明后赋值,在C语言里两者等价。

更好的写法应该是int *p=a;因为C语言数组名等于首个元素的地址,
也就是a == &a[0]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-17
int a[];
int *p;

p=a;也就是说
p=a;了。
第2个回答  2010-03-17
p是一个指针,
第一个语句在定义的同时初始化,
第二个先定义后赋值。
仅此而已。
相似回答