#include <stdio.h>
main()
{
int i, *ptr;
int array = {5,3,1};
for (ptr=array, i=0; i<5; i++, ptr++)
{
if (*ptr == 0)
putchar(′X′);
else
putchar(′A′ + *ptr);
}
printf(“\n“);
}
这个能解析一下正确的运行步骤吗,答案是FDBXX
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 小白小白你好菜 2021-02-26 19:32关注
首先定义一个int类型的指针ptr,然后再定义一个数组array(你应该少打了[]),array中的元素有5,3,1三个。
for循环中首先让ptr=array,就是ptr指针指向array数组首元素的地址,i 初始化为0是为了循环五次中间的循环体。
循环中*ptr就是这个指针指向的地址所对应的元素值,因为刚开始指向了array,其实就是指向了第一个元素array[0]。
那么循环中的if语句就是判断指针当前指向的地址的元素的值是否为0,当值为0时,输出字符X;当值不为0时,拿第一个为例,
就是输出('A'+*ptr),也就是('A'+5),这里涉及到ASCII码,'A'的码值为97,97+5=102,102就是F的码值,所以第一次输出为F;
除了理解ASCII码,也可以理解为字符A往后加5个值,ABCDEF,A往后5个就是F了。
第一个循环结束,注意ptr++了,也就是ptr指向数组第二个元素3了,以此类推,输出FDB
后面指针又增加了,超出了数组的下标范围,所以此时*ptr=0,输出XX了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 微信小程序:渲染收货地址时页面不显示
- ¥20 win7 64位DirectShow提示初始化失败如何解决?
- ¥20 小规模孤立词识别系统设计
- ¥15 关于Java对接海康威视车牌识别一体机SDK是否需要固定外网的IP?
- ¥15 Linux扩容时,格式化卡住了:vgdispaly查看卷组信息,没有输出
- ¥18 关于#ubuntu#的问题:使用背景-工作职责内有七八台ubuntu系统的电脑,平时需要互相调取资料,想实现把这几台电脑用交换机组成一个局域网,来实现指定文件夹的互相调取和写入
- ¥20 求一个简易射频信号综测仪
- ¥15 esp8266 tally灯 接收端改为发射端
- ¥30 Labview代码调用access 数据库,相同代码其中一个调用不出来是为什么
- ¥15 基于51单片机的交通灯系统,找改程序有点急