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/