与小杰的岁岁年年 2023-11-28 16:40 采纳率: 95%
浏览 5
已结题

这个代码输出什么?为什么会是这样的结果


#include <stdio.h>

int swap(int* a, int* b) {
    int *p;
    p = a;
    a = b;
    b = p;
    return *a;
}

int main() {
    int x = 3, y = 4, z = 5;
    swap(swap(&x,&y),&z);
printf (“%d%d%d”,x,y,z);
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-11-28 16:46
    关注

    这代码没法编译,假定修正了错误

    #include <stdio.h>
     
    int swap(int* a, int* b) {
        int *p;
        p = a;
        a = b;
        b = p;
        return *a;
    }
     
    int main() {
        int x = 3, y = 4, z = 5;
        int t = swap(&x,&y);
        swap(&t,&z);
        printf ("%d%d%d",x,y,z);
    }
    

    那么输出 345
    也就是没有交换。
    因为你交换的是指针,指针的交换需要双指针

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

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物