我试图将内存地址存储在双指针中,并计算该内存地址处的值,但出现错误。
下面是我尝试编译的代码:
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/