Mon*_*mer -2 c++ arrays pointers reference lvalue
在我的理解array中int array[]={1,2,3,4,5}只是一个指向第一个元素的指针array.这意味着array可以将其分配给ptr类型的指针int*.
参数int* &pin hoo将通过引用传递参数.这意味着我们可以将传递的参数更改为指向其中的另一个值hoo.
void hoo(int* &p, int n)
{
for (int i = 0; i < n; i++)
cout << p[i] << endl;
}
int main()
{
int array[] = { 1,2,3,4,5 };
// I can do this
int* ptr = array;
hoo(ptr, 5);
// but not this.
//hoo(array, 5);
}
Run Code Online (Sandbox Code Playgroud)
为什么我们不能将int传递array给hoo没有ptr?
在我的理解中,int array [] = {1,2,3,4,5}中的数组只是指向数组第一个元素的指针.
这是不正确的.数组是数组,指针是指针.它们是具有不同属性的不同类型.它们经常被混淆,因为数组具有它将急切地衰减到指向其第一个元素的指针的属性.
hoo(array, 5);尝试转换array为a int*但转换的结果是rvalue,不能绑定到非const引用.例如,如果您更改hoo为const引用它将编译正常:
void hoo(int* const &p, int n) { }
int main()
{
int array[] = { 1,2,3,4,5 };
hoo(array, 5);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你无法改变指向的东西 p,使得参考的使用毫无意义.
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |