lemonのtree 2023-12-01 09:37 采纳率: 66.7%
浏览 21
已结题

请问这段代码是什么意思

本人C语言初学者,刚刚学到指针,求帮忙🌹
请问这段代码是什么意思🥺

img

  • 写回答

4条回答 默认 最新

  • 爱晚乏客游 2023-12-01 09:53
    关注

    你要记住,指针就是地址。把所有的地址都打印出来你就能很清楚知道为什么是这个输出了。
    其中唯一的难点就是在于*pt++这一句。这一句优先级关系,可以理解为*(pt++),也就是pt自增后再取地址内容。而pt++和++pt的区别就在于:
    pt++是先赋值在自增,所以你看到下一步打印的时候,pt地址移到str[4]的地址了,但是在移位置之前,他把str[3]的内容改动了。
    另外请注意,计算机中地址一般是用%x来表示的,也就是16进制表示地址的,但是16进制可能不好理解(遇到末端为ABC的没有数字那么直观),所以我用%d来打印,你可以看到具体的数字

        char str[] = "ABC123";
        for (int i = 0;i < 6;i++) {
            printf("str[%d]地址为:%d\n", i, &str[i]);
        }
        char *pt;
        pt = str + 3;
        printf("pt地址为:%d\n", pt);
        printf("%s\n", pt);
        *pt++ = '6';
        printf("pt地址为:%d\n", pt);
        printf("%s\n", pt);
        printf("%s\n", str);
        pt += 2;
        printf("pt地址为:%d\n", pt);
        str[3] = *pt;
        printf("%s\n", str);
        
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月1日