c++ - 从类型为 'char*&' 的临时对象初始化类型为 'char*' 的非常量引用

标签 c++ reference

void test3(char * &p){
    strcpy( p, "aaaaaaaaaaaaaaaaaaaaaaaaaa");
}


char c[] = "123";
test3(c);

上面的代码编译失败:

initialization of non-const reference of type 'char*&' from a temporary of type 'char*'

为什么 char c[] 不能被参数 p 引用?

最佳答案

因为 c 的类型是 char[4],即 四个 char 的数组。您的引用需要一个 char*,即 指向 char 的指针。

数组不是指针。在大多数情况下,它们在使用时衰减到指向第一个元素的指针,但衰减产生的指针是临时的。因此,它不能绑定(bind)到非常量引用.

为什么你的函数首先要引用?使用 char* 会非常好。

关于c++ - 从类型为 'char*&' 的临时对象初始化类型为 'char*' 的非常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373863/

相关文章:

c++ - C++ std::string 的长度(以字节为单位)

c++ - CPP 底漆 5ed。 15.8.1 多重集相关

C++ 引用和左值

c++ - 在 Cygwin 上构建 Nodejs 时出现构建错误

c++ - 当按下鼠标左键时,在 SFML 2.0 中也按下了

c++ - 为什么这个循环不加载正确的事件?

reference - 是否可以在不使用类型参数的情况下将 Arc<RwLock<&Fn()>> 传递给函数?

Java:引用另一个类中的构造函数

reference - 什么是软件开发引用的最佳在线图书服务?

c++ - wxWidgets:对 wxURL 的 undefined reference