A-A+

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

2022-08-06 02:35:44 问答库 阅读 174 次

问题详情

设有定义语句: int x[6]={2,4,6,8,5,7), *p=x, i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。
A.for(i=0;i<;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。因此可以通过指针p的下移,即每次加1引用数组x中的元素,来指向数组中的每个元素,这样循环6次即可引用数组的每个元素。选项A和C,*和++的优先级相同且都具有右结合性,p++是先使用p的值再对p加1,即先输出*p的值,再将指针下移一位。选项B是取*(p+i)所对应的存储单元中的数据输出,随着i的递增输出x数组的6个元素。选项D中表达式为(*p)++,该表达式是先取*p的值然后将其值加1,而没有将指针下移一位,故选项D不正确。所以,4个选项中选项D符合题意。

考点:语句,定义