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

标签 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*’类型的右值对‘double&’类型的非常量引用进行无效初始化 双 &doubelPtr = &DBL->a; ^”

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

最佳答案

您在此处错误地使用了reference运算符:

 double &doubelPtr = &DBL->a;

您应该只声​​明一个指针并为其分配地址。

 double *doubelPtr = &DBL->a;

上面使用了address-of运算符。我知道两个运算符(引用和地址)使用相同的符号 & 很令人困惑,但事实就是如此。

但是,我很好奇为什么你需要这样做?是因为您调用的函数需要指向 double 的指针吗?如果是这样,则无需采用迂回方式将指针声明为 double 并为其赋值。只需将 double 的地址传递给函数即可。

关于c++ - 存储双指针地址并检索其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353445/

相关文章:

c - 如何使用指针访问和使用函数中的不同值?

c++ - 将字符串分配给 char 数组

c++ - 在成员函数中保留对对象本身的引用

c++ - add_rect 标识符未找到 C++

c - C 中数组值突然变化

c - 在C语言中,如何将数组传递给函数?

c++ - 在 QtCreator 中是否有隐藏 clang 内联警告的选项?

c - 程序计算一个字符在文件中出现的次数(不区分大小写)

c - 如何读/写非 ascii 字符?

c++ - 如何在 C++ 中获取指向 char[] 的指针的内存地址