asdasdasdsc 2021-02-26 19:13 采纳率: 94.7%
浏览 72
已采纳

这个能解析一下正确的运行步骤吗,答案是FDBXX

#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“);
}

  • 写回答

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了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于龙芯1b,JTAG停止调试服务
  • ¥20 收一个快手协议下单算法
  • ¥15 神途脚本逐鹿神途,管理自欺欺人
  • ¥15 求一个图片中的成交量选股公式
  • ¥15 已知正方形内随机生成坐标matlab
  • ¥30 关于#python#的问题:我想要的是这79个大特征对于房屋售价的最大的影响前十名(相关搜索:随机森林)
  • ¥15 react native新项目运行时遇到问题
  • ¥15 脚本运行Python文件,报错:error: unrecognized
  • ¥15 使用matlab计算自定义特殊函数的二重积分,改变积分顺序所得的结果不同的问题?
  • ¥15 如何正确在vs2010中初始化map对象