通过'指针3'获取'指针1'的值

时间:2012-10-30 17:44:26

标签: c++ pointers

请查看以下代码

#include <iostream>

using namespace std;

int main()
{
    int a = 5;

    int *aPtr1 = &a;
    int *aPtr2 = aPtr1;
    int *aPtr3 = aPtr2;

    cout << "'a' value: " << a << endl;
    cout << "'aPtr1' value: " << *aPtr1 << endl;
    cout << "'aPtr2' value: " << *aPtr2 << endl;
    cout << "'aPtr2' value from 'aPtr3': " << **aPtr3 << endl;
}

在这里,在最后一行,我试图从'aPtr3'获取'aPtr2'值。换句话说,这是我试图找到'之前的指针'。但它给了我错误

PointerTest.cpp:16: error: invalid type argument of `unary *'

我怎样才能做到这一点?请帮忙!

2 个答案:

答案 0 :(得分:3)

aPtr3等于aPtr2aPtr2a的地址。撰写*aPtr3时,您已经访问了其中包含的地址指向的值(即a的地址)。

如果你想使用这种语法,你应该有

int **aPtr3 = &aPtr2;

答案 1 :(得分:2)

**aPtr3唤起未定义的行为。 aPtr3不是指向int的指针;它是一个指向int的指针。只需执行以下操作即可修复代码:

<< *aPtr3 << endl

您的代码引发了未定义的行为,因为**aPtr3归结为*5