存储双指针地址并检索其值

时间:2015-02-05 20:29:51

标签: c++ c pointers

我正在尝试将内存地址存储在双指针中,并将该值存储在该内存地址但是会出错。

下面是我要编译的代码:

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;                                ^“

有人可以帮我纠正这段代码吗?谢谢!

3 个答案:

答案 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