C++ 按引用传递其他类型

2023-03-20 15:57 更新

不单是结构能按引用传递,所有其他我们见过的类型同样可以。例如,我们可以这么写,来交换两个整数:

void swap (int& x, int& y)
{
   int temp = x;
   x = y;
   y = temp;
}

用普通方式调用这个函数:

int i = 7;
int j = 9;
swap (i, j);
cout << i << j << endl;

程序输出97。你可以为程序画出栈图来说服自己这是正确的。如果参数x和y声明为普通参数(没有加上&符号),则swap函数无效。它会修改x和y,而对i和j没有影响。

当人们开始通过引用传递东西,例如整型时,他们经常试图使用表达式作为引用参数。如:

int i = 7;
int j = 9;
swap (i, j+1);            //错误!

这是不合法的,因为表达式j+1并不是一个变量---它并没有占据一个引用可以指向的地址。弄清楚什么类型的表达式可以传引用是一个小技巧。目前一个好的规则是引用参数必须是变量。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号