若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5

若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为()。
A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);

题有问题样,如果p为指针变量,应该是p=a;那答案就是D
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-26
应该选D,AC明显是一样的,B没问题,排除法就是D了
第2个回答  2010-06-26
D *p[5]没有意义本回答被提问者采纳
第3个回答  2010-06-26
p 是什么类型变量?

若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句
答案:D 对于数组a[10],a就是该数组的首地址,定义指针p赋值为a,那么a和p的操作基本相同:a[5]=p[5]=*(a+5)=*(p+5),对于D选项,p[5]是个int值,再取*就不对了。

若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
题有问题样,如果p为指针变量,应该是p=a;那答案就是D

设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},i,*p=a;,
答案是D,D的正确形式应该为:*(a+i)前面多了个星号。A:a[0]B: a[i]C: p[i]

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是...
因为数组的下标是从0开始的,也就是说a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10。所以B不对;p 和 a 都是指向数组a说地址的指针,它们指向的都是a[0];a[p-a],因为p=a=a数组的首地址,所以 p-a =0,a[p-a] = a[0]。

若已定义int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中 则对a数组元 ...
【答案】:D 解析:通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

C语言若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数组不为3的表达...
答案是C..我解释是这样,供你参考:B解释,x为数组首地址,+3就是向后移动三个地址,指针指向数值3的位置,将地址赋给指针变量P1,因为运算符++比*高一级,所以先执行P1++,但是看清楚,这里的P1的地址值没变,接着执行*运算符,取值就为3... 你的问题在于:P++在此次运算并不会加1,只能在...

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是...
因为数组的下标是从0开始的,也就是说a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10。所以B不对;p 和 a 都是指向数组a说地址的指针,它们指向的都是a[0];a[p-a],因为p=a=a数组的首地址,所以 p-a =0,a[p-a]= a[0]。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;以下不能表示a数组元素
这题应该选D A p指向a,那么*p就是a[0]C ++(后缀) 的优先级比 *(取值) 高 故先进行++ 然后再进行取值 p++ 就是 a[1]D *p-a 是 a[0]-a 值不确定

...int a[10]={1,2,3,4,5,6,7,8,9,10},p=a; 则不能表示a数组元素的表 ...
即a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],正好10个,没有a[10],所以a[10]就是不能表达这个数组元素。C、*a ---数组名a中保存的是数组的首地址,*是取单元中的值,*a就是取数组首地址中单元中a[0]的值。D、a[p-a] --- p指向的是数组a,因为p...

...问题int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;不能表示a数组元素的是...
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1],由此可见答案B中a[10]已经超过规定的范围,故不能表示数组a中的元素。答案A中因为指针P指向数组首地址,所以*p相当于a[0]这个元素

相似回答