A-A+

设有定义语句: int x[6] = {2 4 6 8 5 7} * p=x i; 要求

2022-08-06 02:15:48 问答库 阅读 174 次

问题详情

设有定义语句: int x[6] = {2,4,6,8,5,7} , * p=x,i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。
A.for(i=0; i <6;i++) printf("%2d",* (p++));
B.for(i =0;i <6;i ++ ) printf("%2d" , * (p +i));
C.for(i =0;i <6;i ++ ) printf(" %2d" , * p ++ );
D.for(i =0;i <6;i ++ ) printf("%2d" ,(* p) ++ );请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:D
解析:*p=x的作用是将x的首地址赋给指针变量p。选项A)正确,*(P++)中括号内的++是在P的后面,所以它先取*P的值x[0],再执行p++;选项B)正确,p+i表示x[i]的地址,*(p+i)表示x[i]的值;选项C)中的*和++处于同一优先级别,而结合方向为自右而左,因此*p++相当于*(p++),与选项A)相同;选项D)中的(*p)++是使*p的值+1,即x[0]的值加1,它不能实现指针的移动,每次循环只是x[0]的值在改变,而P的值并没有改变,所以不能实现6个元素的输出。

考点:语句,定义