【发布时间】:2012-09-10 09:40:27
【问题描述】:
为什么这样不行?
void func(const char* &pointer){...}
//in main
const char* mainPointer = "a word";
func(mainPointer);
我的意图是发送一个指向函数的指针,该函数会更改它(指针)但不会更改它指向的字符。
【问题讨论】:
-
应该可以 - ideone.com/93Zuo 并且可以使用。
-
您是否可能编译为 C 而不是 C++?
-
不。我正在用 C++ 编译。我得到的错误:无法将参数 1 从 'const char *' 转换为 'const char *&'
-
@kakush:展示你的完整程序。在错误消息中,我认为编译器是在说您提供的是
const char*类型的右值表达式,而不仅仅是变量的名称。 -
@kakush:你不能引用
mainPointer+1。它是计算产生的值,它不一定在内存中具有地址。即使您可以修改它,您也不会修改mainPointer,这是您所期望的,您将修改一些包含mainPointer+1值的指针。因此,C++ 标准禁止普通的&引用绑定到右值。
标签: c++ pointers pass-by-reference