You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++新手关于void函数定义与传值调用的实现问题咨询

问题1:能不能定义多个void函数?

完全可以,只要不同函数的签名(函数名+参数列表)不重复就符合C++语法要求,你写的两个Exchange函数的逻辑本身是符合需求的,只是存在少量语法错误导致无法正常运行。

问题2:需要修改的地方

  • 首先Exchange2函数定义结束后缺少右大括号},属于语法错误,会直接导致编译失败
  • 代码中使用了printf输出函数,需要在代码开头引入对应的头文件#include <cstdio>
  • (可选优化)变量定义可以和赋值合并,不用分开写,代码更简洁

修改后可正常运行的完整代码

#include <cstdio>

void Exchange1(int a, int b)
{
    int temp1;
    temp1 = a;
    a = b;
    b = temp1;
}

void Exchange2(int* x, int* y)
{
    int temp2;
    temp2 = *x;
    *x = *y;
    *y = temp2;
}

int main()
{
    int a = 1, b = 2, x = 3, y = 4;

    printf("Call-by-value before : %d , %d\n", a, b);
    Exchange1(a, b);
    printf("Call-by-value after : %d , %d\n", a, b);

    printf("swap before : %d %d\n", x, y);
    Exchange2(&x, &y);
    printf("swap after : %d %d\n", x, y);

    return 0;
}

运行逻辑说明

  • Exchange1采用值传递,函数内部操作的是实参a、b的拷贝,不会修改原变量的值,正好符合你要求的调用后仍输出1、2的效果
  • Exchange2采用指针传递,函数内部直接操作实参x、y的内存地址存储的值,所以调用后原变量的值会交换为4、3,符合你的需求

内容的提问来源于stack exchange,提问作者ganziji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:45:04