通过参考问题

Passing by reference issue?

本文关键字:问题 参考      更新时间:2023-10-16

我试图将数组char arr[6] = {"1","2",etc.}传递到采用此 void foo(char* &arr,...)的参数且不起作用的函数的问题。谁能向我解释?

char arr[6]是一个数组。

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

现在,由于该参数不是正确的类型,因此必须转换它。一个阵列隐式腐烂(衰减是一种转换)为第一个元素的指针。

但是,这个腐烂的指针是暂时的(rvalue)。非const lvalue参考无法指代rvalues,因此用数组参数调用 foo是不明式的。


您可以创建一个指针变量;可以将其传递给foo

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

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


ps。阵列的初始化有些问题。"1""2"不是char对象。