わかりましたポインターへのポインターの概念を理解しています。しかし、なぜこれが機能しないのかわかりません。
void function(int **x)
{
*x = 10;
}
エラーが発生し続けます: タイプ "int" の値をタイプ "int*" のエンティティに割り当てることはできません
ポインターへのポインターについて何が間違っているのか、または何が理解できないのですか?
omg x_x C と C++ を混同していました。
x はポインターへのポインターであるため、実際のオブジェクトに到達するには、2 回逆参照する必要があります。例えば**x = 10;
わかりましたポインターへのポインターの概念を理解しています。
いや...
*x
は であるint*
ため、 を割り当てることはできませんint
。
ポインターツーポインターの概念は、参照が利用できない C に由来します。これにより、参照セマンティクスが可能になります。つまり、元のポインターを変更できます。
つまり、逆参照を 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)
int *
x はではなくの型を指していint
ます。あなたはやりたいか、static int i = 10; *x = &i
または**x = 10
。