问题
单项选择题
设有定义语句:
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个元素的输出。