-2
C言語のメモリアドレスとデータ型に関するいくつかの論文を読んでいましたが、内容をかなりよく把握していましたが、数学がうまくいかず、それはインターネット上のどこにでもあります。メモリアドレスとデータ型の紹介
は、私は私が手出力が
int i is stored in 0x6ffc88
int j is stored in 0x6ffc84
であると私は読んでいるテキストでは、整数のサイズで私のコンピュータと同じ4バイト(2つのローカル変数
void foo(void){
int i, j;
printf("int i is stored in %p\n", &i);
printf("int j is stored in %p\n", &j);
}
を作成すると)。したがって、int i
は4バイトが割り当てられています。しかし、int i
とint j
のメモリアドレスの違いはちょうど4ビット(0100
)です。
違いは4バイト(0xffffffff
)のように大きいとは限りませんか?
ここで私は混乱していますか?
'int iとint jのメモリアドレスの差はちょうど4ビットです' - いいえ、これらはバイトアドレスです。 – ThingyWotsit
アドレスはバイトアドレスです。 Cはビットアドレッシングを許可しません。 –
CPUのほとんどは、バイトアドレス可能です。 CはCPUと通信し、バイトではないビットで実行されるメモリ読み取り/書き込み操作を要求できます。 Cを使うと、読んだ後でも整数変数に入れても、少なくともバイト単位でメモリ位置を読み書きすることができます。>><<&|ビット演算子 – EsmaeelE