ポインタのアドレスを格納するには何が必要ですか?
int a = 2;
int *p = &a;
int **q = &p;
実用的な使用はありますか?リアルタイム アプリケーション。
A**
は単なるポインターへのポインターです。したがって、*p
には のアドレスが含まれ、 には オブジェクトのアドレスp
を含む のアドレスが含まれます。p**
p*
p
**
関数呼び出しの外でもメモリ割り当てまたは代入を保持したい場合に使用されます。
こちらの記事もチェックしてください。
例:-
void allocate(int** p)
{
*p = (int*)malloc(sizeof(int));
}
int main()
{
int* p = NULL;
allocate(&p);
*p = 1;
free(p);
}
する
int main (int argc, char** argv) { ... }
見覚えがあります?
他の関数でN次ポインタを配置したい場合は、(N+1)次ポインタを使用する必要があります。例えば:
void allocate_matrix(int ***ptr, int x, int y);
行列を割り当てましょう:
int **matrix:
allocate_matrix(&matrix, 5, 5);