use*_*768 3 c++ arrays pointers
假设我有这个功能:
void f(int*& ptr) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
当我尝试做的时候:
int array[3] = {};
f(array); //fails to compile, error array is rvalue
int* p = array;
f(p); //compiles
Run Code Online (Sandbox Code Playgroud)
为什么第一种情况失败了?数组不是指针吗?
不,数组不等同于指针.
在第一种情况下,必须将数组转换为指针.转换的结果是rvalue,它不能绑定到非const 左值引用,因此是错误.
在第二种情况下,p是一个表示正确类型的对象的左值,因此函数调用成功.