通过参考问题传递?

时间:2017-09-12 14:55:23

标签: c++ arrays reference

问题我试图将数组char arr[6] = {"1","2",etc.}传递给一个带有void foo(char* &arr,...)之类参数的函数,但它不起作用。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:6)

char arr[6]是一个数组。

char* &arr是对指针的(n值)引用。

现在,由于参数的类型不正确,因此必须进行转换。数组隐式衰减(衰减是一种转换)到指向第一个元素的指针。

但是这个腐朽的指针是一个临时的(一个右值)。非const左值引用不能引用rvalues,因此用数组参数调用foo是不正确的。

您可以创建指针变量;可以传递给foo

char* ptr = arr;
foo(ptr, ...);

然后该函数可以修改该指针(即使其指向某个其他char对象),因为该引用是非const的。

PS。数组初始化有一些问题。 "1""2"不是char个对象。