为您找到"
数组问题 int a[5],*p;p=a;p=&a[0];p=&a;都是什么含义
"相关结果约100,000,000个
所以,p=a; 或p=&a[0]是正确的,表示指针p指向数组的首元素。
int a[5];//a是指针常量,表示的是数组首元素的地址,即a=&a[0]。int *p=a;p=&a[0];//因为a=a[0],所以p=a 和p=&a[0]是等价的。p=&a//int *p,p是一个指向int类型的指针,而&a表示的是指向整个...
在数组中,数组名表示首地址常量。a等同于&a[0]。所以p=a。就是p指向a首地址。p=&a是错的,a已经是地址里。可以写p=&a[0]。
int a[5],*p; //逗号,星号,分号都是中文的。p=a;
若定义int a[5],*p=a;则A选项中,*&a[5],&a[5]是a[5]的地址,&a[5]是a[5]本身 但数列中没有a[5]这个元素,错误。与&为逆运算 B选项中*a+2 a为a[0]则*a+2为a[0]+2,不是a[2],错误 C选项...
正确答案是:D &a[5]就是a[5],下标越界了 a就是a[0],a[0]+2不是对数组元素的正确引用 同理,*(p+5)就是a[5],下标越界了 而* (a+2)就是a[2]
题目有点小问题哦:int a[5] ;int *p=a 那么p中存放的为数组a的首地址,相当于p=&a[0] ;那么p+2的值为元素 a[2]的地址 ;a[2]是数组 a的第3个元素 ;所以p+2表示第__3__个元素的地址。
与p=&a[0]等价的语句p=a;(p+1)的值是2 (a+1)的值是2
【答案】:D 本题首先使指针指向数组a的首地址。选项A越界;选项B中,a并非指针变量;选项C使数组a的地址加1;选项D取数组元素a[0]的地址。
也就是a[0]的地址),p+2就是a[2]的地址,相当于&a[2]。&a[5]是错的,访问越界了,数组元素最后一个是a[4]。a表示数组的首地址,本身是地址常量,不能赋值。所以a++是错了。&a也是错的,a本身就是地址。