通过参考问题传递?

Dan*_*yen 0 c++ arrays reference

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

eer*_*ika 6

char arr[6] 是一个数组.

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

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

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


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

char* ptr = arr;
foo(ptr, ...);
Run Code Online (Sandbox Code Playgroud)

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


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