666HZ666 2024-03-07 19:47 采纳率: 100%
浏览 9
已结题

C语言大一新生,求详解

img


C语言大一新生,求详解
C语言大一新生,求详解
C语言大一新生,求详解
C语言大一新生,求详解

  • 写回答

5条回答 默认 最新

  • a5156520 2024-03-07 19:49
    关注

    通过代码测试,输出的字符串如下所示:
    y
    my
    mmy
    ummy
    Yummy

    测试如下:

    参考链接:

    #include <stdio.h>
    #include <string.h>
    
    int main(void){
        
        // https://zhuanlan.zhihu.com/p/377633216
        // 定义字符数组food,数组名food指向数组第一个元素的地址 
        char food[] = "Yummy"; 
        char *ptr;
        // 将字符指针ptr赋值为字符数组中字符串最后空字符的地址 
        // food是数组第一个元素的地址,即food[0]的地址,strlen(food)的值为5,是字符数组中字符串的长度
        // 所以food+strlen(food),可以用&food[5]来表示,即字符数组空字符的地址
        //  food[0]  [1]  [2]  [3]  [4]  [5]
        //      'Y'  'u'  'm'  'm'  'y'  '\0'
        ptr=food+strlen(food); 
        
        // while循环的条件,首先字符指针ptr自减1,然后判断字符指针ptr是否大于等于food 
        // 如果ptr大于等于food,则循环输出ptr指向的字符串,否则退出循环
        // 这里while循环共循环五次,具体如下:
        // 第一次,ptr=&food[5],然后--ptr, ptr变为&food[4],即指向倒数第一个字符'y',然后往后打印直到空字符结束,即打印出:y
        // 第二次,ptr=&food[4],然后--ptr, ptr变为&food[3],指向倒数第二个字符'm', 往后打印到空字符结束,即打印出:my
        // 第三次,ptr=&food[3],然后--ptr, ptr变为&food[2],指向倒数第三个字符'm', 往后打印到空字符结束,即打印出:mmy 
        // 第四次,ptr=&food[2],然后--ptr, ptr变为&food[1],指向倒数第三个字符'u', 往后打印到空字符结束,即打印出:ummy 
        // 第五次,ptr=&food[1],然后--ptr, ptr变为&food[0],指向倒数第三个字符'Y', 往后打印到空字符结束,即打印出:Yummy 
        // 第六次,ptr=&food[0],然后--ptr, 此时ptr变为(food-1),小于food,while循环条件不满足,退出while循环 
        //int i=5;
        //printf("ptr=%x,food=%x,food[%d]=%x,%c,%d\n",ptr,food,i,&food[i],food[i],food[i]);    
        while(--ptr>=food){  
        //    i--;
        //    printf("ptr=%x,food[%d]=%x,%c,%d\n",ptr,i,&food[i],food[i],food[i]);
            puts(ptr);
            
        }
    //    i--;
        //printf("ptr=%x,food[%d]=%x,%c,%d\n",ptr,i,&food[i],food[i],food[i]);
        
        return 0;
        
    }
     
    
    

    img

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

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序