0

こんにちは私はダブルポインタについて質問があります。たとえば、このコードでは次のようになります。

int a, b=2;
int *iPtr1, **iPtr2;

iPtr1  = &a;
iPtr2  = &iPtr1;  
*iPtr1 = b+3;
*iPtr2 = iPtr1;

最後の行*iPtr2 = iPtr1;iPtr1ダブルポインタを一度だけ逆参照するので、それ自体を指すように指示することは、iPtr1?を使用するようなものです。

4

2 に答える 2

2

指し示すものは*iPtr2何でもiPtr1指します。そしてそれをiPtr2指すようiPtr1に と同じiPtr1 = iPtr1です。

于 2013-02-28T15:30:30.430 に答える
1

で実行をトレースするgdbと、最後の行*iPtr2=iPtr1が何も変更されていないことがわかります。(それは一種のようなものですiPtr1=iPtr1

iPtr2 = &iPtr1;では、 はiPtr2すでに THE POINTER が存在するアドレスを指していますが、iPtr1THE ADDRESS が指しているわけではありませんiPtr1

:その時点でガベージ値(ローカルの非静的変数の場合)があり、それを逆参照することは未定義の動作iPtr2=&iPtr1であるため、に置き換えることはできません。*iPtr2=iPtr1iPtr2

于 2013-02-28T15:34:09.977 に答える