-2

わかりましたポインターへのポインターの概念を理解しています。しかし、なぜこれが機能しないのかわかりません。

void function(int **x) 
{
    *x = 10;
}

エラーが発生し続けます: タイプ "int" の値をタイプ "int*" のエンティティに割り当てることはできません

ポインターへのポインターについて何が間違っているのか、または何が理解できないのですか?

omg x_x C と C++ を混同していました。

4

4 に答える 4

10

x はポインターへのポインターであるため、実際のオブジェクトに到達するには、2 回逆参照する必要があります。例えば**x = 10;

于 2012-08-31T19:02:12.487 に答える
7

わかりましたポインターへのポインターの概念を理解しています。

いや...

*xは であるint*ため、 を割り当てることはできませんint

ポインターツーポインターの概念は、参照が利用できない C に由来します。これにより、参照セマンティクスが可能になります。つまり、元のポインターを変更できます。

于 2012-08-31T19:02:47.653 に答える
6

つまり、逆参照を 2 回行う必要があります。逆参照は、ポインターがポントしているものを返すので、次のようになります。

int   n     = 10;   //here's an int called n
int*  pInt  = &n;   //pInt points to n (an int)
int** ppInt = &pInt //ppInt points to pInt (a pointer)

cout << ppInt;      //the memory address of the pointer pInt (since ppInt is pointing to it)
cout << *ppInt;     //the content of what ppInt is pointing to (another memory address, since ppInt is pointing to another pointer
cout << *pInt;      //the content of what pInt is pointing to (10)
cout << **ppInt;    //the content of what the content of ppInt is pointing to (10)
于 2012-08-31T19:11:23.503 に答える
0

int *x はではなくの型を指していintます。あなたはやりたいか、static int i = 10; *x = &iまたは**x = 10

于 2012-08-31T19:02:21.483 に答える