なぜですか
int i;
int *p = &i;
そうです、その間
int i, *p;
*p = &i;
間違っている?
*
宣言 ( int *p = &i
) と式 ( ) で使用される演算子に違いはあります*p = &i
か?
なぜですか
int i;
int *p = &i;
そうです、その間
int i, *p;
*p = &i;
間違っている?
*
宣言 ( int *p = &i
) と式 ( ) で使用される演算子に違いはあります*p = &i
か?
2 番目のコード ブロックでは、次のようになります。
int i, *p;
*p = &i;
次のように修正できます。
int i, *p;
p = &i;
p
は依然として an へのポインタとして宣言されていますが、toint
のアドレスを格納したいとします。i
p
あなたのコードでは、 (初期化していないため)を指すメモリ内の領域へ*p = &i
のアドレスを格納します。i
p
はい、違いがあります。最初の形式*
は型定義の一部ですint *
。
2 番目の形式では、単項逆参照演算子です。また、2 番目の式にもエラーがあります。ポインターに代入する場合、逆参照する必要はありません。
(*p)
typeint
にp
評価され、 type に評価されint *
ます。&i
type に評価されint *
ます。したがって、int 変数 i のアドレスをポインター p に割り当てると、p=&i;