问题我试图将数组char arr[6] = {"1","2",etc.}
传递给一个带有void foo(char* &arr,...)
之类参数的函数,但它不起作用。有人可以向我解释一下吗?
答案 0 :(得分:6)
char arr[6]
是一个数组。
char* &arr
是对指针的(n值)引用。
现在,由于参数的类型不正确,因此必须进行转换。数组隐式衰减(衰减是一种转换)到指向第一个元素的指针。
但是这个腐朽的指针是一个临时的(一个右值)。非const左值引用不能引用rvalues,因此用数组参数调用foo
是不正确的。
您可以创建指针变量;可以传递给foo
:
char* ptr = arr;
foo(ptr, ...);
然后该函数可以修改该指针(即使其指向某个其他char
对象),因为该引用是非const的。
PS。数组初始化有一些问题。 "1"
和"2"
不是char
个对象。