通过引用指针传递的参数

Rav*_*ven 5 c++ pointers arguments reference

每次我尝试编译我的代码时都会收到错误:

无法将参数1从'int*'转换为'int*&'

它正在测试代码如下:

cannot convert parameter 1 from 'int *' to 'int *&'
Run Code Online (Sandbox Code Playgroud)

我想单手调用该函数而不在某处创建指针只是为了传递它.并且由于指针没有构造函数,因此无法完成此类操作.set(int*(&myVal));.有没有其他方法可以通过引用传递指针而无需创建临时变量?

编辑:顺便说一下,我知道为什么代码无法编译(我只是传递地址,可能是int而不是实际的指针).问题是如何做到这一点.

Arm*_*yan 14

对非const的引用不能绑定到右值.&运算符的结果是rvalue.看一下左值和右值之间的区别,或者阅读一本好的C++书.

此外,在您的上下文中,您不需要通过引用传递.以下也可以:

void set (int *val){
   *val = 10;
}
Run Code Online (Sandbox Code Playgroud)

如果你做这样的事情,就需要参考;

void set (int*& val){
   val = new int; //notice, you change the value of val, not *val
   *val = 10;
}
Run Code Online (Sandbox Code Playgroud)

  • @Raven:是的,这是正确的.但是不需要通过引用传递内置类型.它不如传递价值有效.对于用户定义的类型,最好通过引用传递给const (2认同)