こんにちは私はダブルポインタについて質問があります。たとえば、このコードでは次のようになります。
int a, b=2;
int *iPtr1, **iPtr2;
iPtr1 = &a;
iPtr2 = &iPtr1;
*iPtr1 = b+3;
*iPtr2 = iPtr1;
最後の行*iPtr2 = iPtr1;
でiPtr1ダブルポインタを一度だけ逆参照するので、それ自体を指すように指示することは、iPtr1?を使用するようなものです。
こんにちは私はダブルポインタについて質問があります。たとえば、このコードでは次のようになります。
int a, b=2;
int *iPtr1, **iPtr2;
iPtr1 = &a;
iPtr2 = &iPtr1;
*iPtr1 = b+3;
*iPtr2 = iPtr1;
最後の行*iPtr2 = iPtr1;
でiPtr1ダブルポインタを一度だけ逆参照するので、それ自体を指すように指示することは、iPtr1?を使用するようなものです。
指し示すものは*iPtr2何でもiPtr1指します。そしてそれをiPtr2指すようiPtr1に と同じiPtr1 = iPtr1です。
で実行をトレースするgdbと、最後の行*iPtr2=iPtr1が何も変更されていないことがわかります。(それは一種のようなものですiPtr1=iPtr1)
iPtr2 = &iPtr1;では、 はiPtr2すでに THE POINTER が存在するアドレスを指していますが、iPtr1THE ADDRESS が指しているわけではありませんiPtr1。
注:その時点でガベージ値(ローカルの非静的変数の場合)があり、それを逆参照することは未定義の動作iPtr2=&iPtr1であるため、に置き換えることはできません。*iPtr2=iPtr1iPtr2