なぜですか
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のアドレスを格納したいとします。ip
あなたのコードでは、 (初期化していないため)を指すメモリ内の領域へ*p = &iのアドレスを格納します。ip
はい、違いがあります。最初の形式*は型定義の一部ですint *。
2 番目の形式では、単項逆参照演算子です。また、2 番目の式にもエラーがあります。ポインターに代入する場合、逆参照する必要はありません。
(*p)typeintにp評価され、 type に評価されint *ます。&itype に評価されint *ます。したがって、int 変数 i のアドレスをポインター p に割り当てると、p=&i;