如何理解w3schools中「函数内按引用传递」的C++示例?
C++引用传递修改外部变量的原理
你之前对局部变量的认知仅适用于值传递的场景,引用传递本身就是C++提供的、无需return即可修改外部变量的语法特性,核心逻辑如下:
swapNums函数的形参int &x、int &y不是普通的局部变量,而是实参的引用别名:相当于给main函数里的firstNum、secondNum分别起了个叫x、y的新名字,二者和原变量共享完全相同的内存空间,并不是独立的新变量。- 你在函数内部对
x、y做的赋值操作,本质就是直接修改firstNum、secondNum对应的内存存储的值,自然不需要return就能把修改同步到函数外部。 - 整个函数里只有临时变量
z是真正的局部变量,函数执行结束后就会被销毁,不会影响外部变量。 - 你可以对比值传递的写法
void swapNums(int x, int y):这种写法里的x、y才是独立的局部副本,函数内部交换它们不会改变外部实参的值,这才符合你之前的认知。
内容的提问来源于stack exchange,提问作者rrowhe4d
相关产品推荐
相关产品推荐

