问题是我试图将数组 char arr[6] = {"1","2",etc.}
传递给一个函数,该函数采用这样的参数 void foo( char* &arr,...)
并且它不起作用。谁能给我解释一下吗?
最佳答案
char arr[6]
是一个数组。
char* &arr
是对指针的(n 左值)引用。
现在,由于参数的类型不正确,因此必须对其进行转换。数组隐式衰减(衰减是一种转换)为指向第一个元素的指针。
但是这个衰减的指针是一个临时的(右值)。非常量左值引用不能引用右值,因此用数组参数调用 foo
是不正确的。
可以创建一个指针变量;可以传递给 foo
:
char* ptr = arr;
foo(ptr, ...);
该函数然后可以修改该指针(即使其指向其他一些 char
对象),因为该引用是非常量。
附言。数组的初始化有一些非常错误的地方。 "1"
和 "2"
不是 char
对象。
关于c++ - 通过引用问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179647/