今日は C のポンターの試験を受けましたが、次の構文が使用されているダブル ポインターに関する質問がありました。
*pointer = &variable;
私が正しく行ったかどうかはわかりませんが、ポインターがどこを指し、変数の値がどのように変化するかを誰かが説明できますか? 最初はsntax errorになると思っていたのですが、テストではそのような答えはありませんでした。前もって感謝します
// two int variables.
int var1;
int var2;
// int pointer pointing to var1
int *ptr = &var1;
// pointer to int pointer..pointing to ptr
int **ptr_to_ptr = &ptr;
// now lets make the pointer pointed to by ptr_to_ptr
// point to var2
*ptr_to_ptr = &var2;
// or alternatively you can do:
// ptr = &var2;
使用方法の例を次に示します。
int foo = 123;
int **bar = malloc(sizeof(int *));
*bar = &foo;
今bar
は foo へのポインタへのポインタです。あまり意味がありません。
pointer
ポインタへのポインタです。例えば、
int var1=42;
int* intptr;
int** ptr2intPtr;
ptr2intptr = &intptr;
//Syntax in question.
*ptr2intptr = &var1;
//Just like *intptr is same as var1, *ptr2intptr is same as intptr
//so the above line will be equivalent to intptr = &var1
//All the three are the same
printf("%d",**ptr2intptr);
printf("%d",*intptr);
printf("%d",var1);
ポインタが次のように初期化されている場合:
int *pointer;
int variable = 10;
pointer = malloc(sizeof(int));
*pointer = &variable;
*pointer = &variable
変数のアドレスが指示先の値として設定されることを意味します。は逆参照であるため*pointer
、基本的には参照を設定せずに値を格納しています。