gpt4 book ai didi

c++ - 参数通过引用传递给指针问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:08 25 4
gpt4 key购买 nike

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

cannot convert parameter 1 from 'int *' to 'int *&'

测试代码如下所示:

void set (int *&val){
*val = 10;
}

int main(){
int myVal;
int *pMyVal = new int;
set(&myVal); // <- this causes trouble
set(pMyVal); // <- however, this doesn't
}

我想一次调用该函数,而不是在某处创建一个指针来传递它。由于指针没有构造函数,因此无法完成类似的操作:set(int*(&myVal));

有没有其他方法可以通过引用传递指针而不需要创建临时变量?

编辑:顺便说一句,我知道为什么代码无法编译(我只是传递可能是 int 而不是实际指针的地址)。问题是它还能如何完成。

最佳答案

对非常量的引用不能绑定(bind)到右值。 & 运算符的结果是一个右值。看看the difference between lvalues and rvalues或阅读 a good C++ book .

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

void set (int *val){
*val = 10;
}

如果您要执行此类操作,则需要引用资料;

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

关于c++ - 参数通过引用传递给指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7308384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com