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
相关产品推荐
相关产品推荐

