0
int a[ ] ={1,3,5,7,9,11,13,15,17,19};
int *pa = &a[4],*pb = &a[1];
pa-pb
の値は何ですか? Ans:3、しかし、どのように?それは12でなければならない(私はpa
とpb
もダブルチェックして、12を得たように)?C減算中のポインタ演算
int a[ ] ={1,3,5,7,9,11,13,15,17,19};
int *pa = &a[4],*pb = &a[1];
pa-pb
の値は何ですか? Ans:3、しかし、どのように?それは12でなければならない(私はpa
とpb
もダブルチェックして、12を得たように)?C減算中のポインタ演算
ポインタの算術演算は通常の算術演算と大きく異なります。ポインタの算術演算a-1
の場合、a
はポインタで、a
の値と1を引いた値ではありません。
例では、pa-pb
は、pa-pb
の値を意味しません。 1つのint変数は4バイトを必要とするので、pa-pb
は、に到達するために3つのintで戻ってくることを意味します。pa
からです。
int
の場合、メモリの1単位は4バイト、浮動小数点8バイト、char 1バイトです。 注:これらの値はシステムによって異なります。通常、これらの値はシステムによって異なります。
その整数は4で分けます。ありがとう! – user7703770