若有声明“char a[5]={ 'A', 'B', 'C', 'D', 'E'}, *p=a, i;”,则以下语句中不能正确输出a数组全部元素

若有声明“chara[5]={'A','B','C','D','E'},*p=a,i;”,则以下语句中不能正确输出a数组全部元素值的是()。A.for(i=0;i<5;i... 若有声明“char a[5]={ 'A', 'B', 'C', 'D', 'E'}, *p=a, i;”,则以下语句中不能正确输出a数组全部元素值的是( )。
A.for(i=0; i<5; i++) printf("%c", a[i]);
B.for(i=0; i<5; i++) printf("%c", *(a+i));
C.for(i=0; i<5; i++) printf("%c", *p++);
D.for(i=0; i<5; i++) printf("%c", *a++);
展开
 我来答
小孩教育与生活小能手
2020-07-15 · 热爱社会生活和少儿教育
小孩教育与生活小能手
采纳数:16 获赞数:1328

向TA提问 私信TA
展开全部

不能正确输出a数组全部元素的选项是:D

因为a是数组名,是一个常指针,对常量++、--是非法的。通过在电脑端vc软件中,书写代码D的运行(下图),可以看出a++是非法的,编译过程中会直接报错,所以说D选项连编译都不能通过,更加不能正确输出a数的组全部元素l。

扩展资料:

A选项直接用a[i]指定数组的元素,这个是一个很常见的数组操作方法,是正确的。

B选项中i是char类型,所以是可以进行 *(a+i)操作的。

C选项中p为指针,是可以进行++、--的指针移动的。

做这种有指针的题目中,需要注意的是常量指针和变量指针的++运算,对常量++、--是非法的,这也是许多题目的挖坑。

还需要注意的是,这类题目中,可能还会挖坑在printf的输出格式上,如把题目的%c改成%d或改成%f,这就是错的了,这种问题就算用软件编译也不会报错,但运行结果会出现问题。

White_MouseYBZ
2018-07-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6595万
展开全部
D不行,选D——因为a是数组名,是一个常指针,对常量++、--是非法的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式