🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
不单是结构能按引用传递,所有其他我们见过的类型同样可以。例如,我们可以这么写,来交换两个整数: ~~~ 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并不是一个变量---它并没有占据一个引用可以指向的地址。弄清楚什么类型的表达式可以传引用是一个小技巧。目前一个好的规则是引用参数必须是变量。