0

次のコードを見てください

#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」の値を取得しようとしています。つまり、これは「Pointer Before」を見つけるための私の試みです。しかし、それは私にエラーを与えます

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

どうすればこれをOKにできますか?助けてください!

4

2 に答える 2

3

aPtr3に等しいaPtr2です。とaPtr2のアドレスですa。を書いているとき*aPtr3は、それが含んでいるアドレス (つまり、 のアドレスa) が指す値に既にアクセスしています。

この構文を使用したい場合は、

int **aPtr3 = &aPtr2;
于 2012-10-30T17:47:11.130 に答える
2

**aPtr3未定義の動作を引き起こします。 aPtr3ポインターからポインターへの int ではありません。intへのポインタです。次のようにしてコードを修正します。

<< *aPtr3 << endl

に要約されるため、コードは未定義の動作**aPtr3を引き起こしました*5

于 2012-10-30T17:54:57.887 に答える