有一个关于c语言指针的题,求详解,具体见内容

有以下程序段chararr[]=”ABCDE”;char*ptr;for(ptr=arr;ptr<arr+5;ptr++)printf(“%s\n”,ptr);输出结果是... 有以下程序段
char arr[]=”ABCDE”;
char *ptr;
for(ptr=arr;ptr<arr+5;ptr++) printf(“%s\n”,ptr);
输出结果是( )
A、ABCDE B、A C、 E D、ABCDE
B D BCDE
C C CDE
D B DE
E A E
答案是D,求解题过程
展开
 我来答
chen1983oki
2010-12-14 · TA获得超过135个赞
知道答主
回答量:31
采纳率:0%
帮助的人:20.9万
展开全部
答案是D
在循环开始,ptr指向了数组的首地址,经过一次循环,指针指向了下一个字节。
第一次循环 ptr指向该数组第一个字节,通过printf函数,输出了指针所指的字符串“ABCDE”
一次循环,每次指针后移一个字节。然后输出该字符串。

参考资料: p

rong862
2010-12-14
知道答主
回答量:22
采纳率:0%
帮助的人:12.9万
展开全部
初始化时ptr=arr,所以ptr开始指向"ABCDE"字符串第一个.
第一轮循环: ptr指针指向"ABCDE"字符串第一个,所以输出ABCDE
第二轮循环: ptr指针加1,所以指向"ABCDE"字符串第二个,所以是BCDE。
以此类推……

第六轮的时候ptr = arr+5 已经不满足ptr<arr+5 ,所以停止循环了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lulu_1030
2010-12-15 · 超过15用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:33.7万
展开全部
在C语言中,数组名代表数组的首地址,ptr=arr,相当于指针ptr指向了arr[0]这个地址,而pri+i和arr+i表达的意思是相同的,都是arr[i]的地址,那么for循环里ptr从arr[0]开始,printf(“%s\n”,ptr);%s是输出一个字符串,从arr[0]开始,则第一次输出ABCDE,ptr++,第二次从arr[1]开始,输出BCDE,直到ptr指向arr[4],输出E
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式