是否可以通过引用传递单个数组元素(以便传入的参数被修改)?例如,假设这是一个主要部分:
int ar[5] = {1,2,3,4,5};
test(&ar[2]);
Run Code Online (Sandbox Code Playgroud)
现在这是函数定义:
void test(int &p)
{
p = p + 10;
return;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码导致编译错误.
BoB*_*ish 10
&ar[2]获取元素在数组中第3个位置的地址.因此,您尝试将int*一个函数传递给期望的函数int&.通常,您不需要对表达式执行任何操作以使其被视为引用,因为引用只是存在于其他位置的某个对象的另一个名称.(这会引起混淆,因为它有时似乎表现得像指针).
只是通过ar[2],对象本身:
test(ar[2]);
Run Code Online (Sandbox Code Playgroud)
如果你把阵列放在一边一会儿就可以更清楚了,只需使用一个int.
void test (int &p);
// ...
int a = 54321;
test(a); // just pass a, not a pointer to a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7308 次 |
| 最近记录: |