我正在尝试将内存地址存储在双指针中,并将该值存储在该内存地址但是会出错。
下面是我要编译的代码:
struct doubleValue{
double a;
};
int main(){
doubleValue *DBL = new doubleValue;
DBL->a=15;
// now I want to store the address of DBL->a in a double pointer and print out the value of double pointer.
double &doubelPtr = &DBL->a;
cout<< *doubelPtr; // this value should be 15
}
如果我运行上面的代码然后我得到一个编译器错误“错误:无法初始化类型'double&amp;'的非const引用来自'double *'类型的右值 double&amp; doubelPtr =&amp; DBL-&gt; a; ^“
有人可以帮我纠正这段代码吗?谢谢!
答案 0 :(得分:2)
您在此处错误地使用reference
运算符:
double &doubelPtr = &DBL->a;
你应该只声明一个指针并为其指定地址。
double *doubelPtr = &DBL->a;
以上使用address-of
运算符。我知道两个运算符(引用和地址)使用相同的符号&
令人困惑,但事实就是如此。
但是,我很好奇为什么你需要这样做?是因为你正在调用一个需要指针double
的函数吗?如果是这样,就没有必要采用迂回的方式来声明指向双精度并指定它的指针。只需将double的地址传递给函数即可。
答案 1 :(得分:0)
double&amp; doubelPtr应为double * doubelPtr
答案 2 :(得分:0)
这是引用与指针的情况;
double &doublePtr
是参考,而不是地址;尝试使用
执行此操作 double *doublePtr