C言語。プログラミング。 *a++=1; の意味はなんですか? ①ポインタ変数a+1に1を代入? ②ポインタ変数aに1を代入、その後で++を実行?

補足

じゃあ、 *++a=1; なら、「aに1をたしたポインタ変数に1を代入」ってことですか?

ベストアンサー

0

*++a = 1; はaの次の要素にアドレスを移した後に1を代入します。 aに1を足した後となるのはaがバイト変数に限ります。 代入値が1なので紛らわしいですがaをインクリメントする値は変数サイズで変わります、要素数がプラス1と言う事です。 例として、一般的なパソコンの4バイトint型なら+4のアドレスとなります。 int b[4]; int *a; a=b; *a++=8; /*b[0]に8代入aはb[1]アドレス*/ *a=9; /*b[1]に9代入*/ *++a=7;/*aがb[2]アドレスになり7代入*/

ThanksImg質問者からのお礼コメント

ありがとうございました。

お礼日時:1/20 21:52

その他の回答(2件)

0

>*a++=1; の意味 ++が後ろに付いてるから後に実行、つまり2番

0

演算子の優先順位を元にわかりやすく括弧を付けると、 *(a++) = 1 となります。 この中ではインクリメントが優先順位が高いのですが、後置インクリメントであるため、値の評価が行われてから実際のインクリメントが行われます。わかりやすく式を分解すると以下になります。 *a = 1; ++a;