c++ - 通过引用问题?

标签 c++ arrays reference

问题是我试图将数组 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/

相关文章:

c++ - 我如何编写一个 const 访问器来返回对成员对象的引用,以便它可以被编辑?

delphi - 一个简单的delphi表单应用程序是否需要任何库或依赖项来部署?

c++ - 将枚举传递给不同文件中的对象

c++ - C++ API 的消费者驱动合约测试

javascript - 如何在 javascript 中将带有 JSON 对象的二维数组转换为单个数组?

arrays - 将 Perl 数组放入哈希中

c++ - 如何在 Windows 上将 lld 与 CMake 一起使用?

c++ - LLVM CreateFCmpONE 等效于整数

java - 如何以数字0退出循环?但现在我有其他问题

c++ - 运算符+ 重载错误。无法返回对对象的引用