2017-04-08 9 views
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でなければならない(私はpapbもダブルチェックして、12を得たように)?C減算中のポインタ演算

答えて

1

ポインタの算術演算は通常の算術演算と大きく異なります。ポインタの算術演算a-1の場合、aはポインタで、aの値と1を引いた値ではありません。

例では、pa-pbは、pa-pbの値を意味しません。 1つのint変数は4バイトを必要とするので、pa-pbは、に到達するために3つのintで戻ってくることを意味します。paからです。

intの場合、メモリの1単位は4バイト、浮動小数点8バイト、char 1バイトです。 注:これらの値はシステムによって異なります。通常、これらの値はシステムによって異なります。

+0

その整数は4で分けます。ありがとう! – user7703770