-2
我正在閱讀一些關於C語言內存地址和數據類型的論文,我一直在很好地理解內容,但是我偶然發現了一些數學,而且我似乎無法想象它出在互聯網上的任何地方。內存地址和數據類型介紹
假設我創建了兩個局部變量
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 is stored in 0x6ffc88
int j is stored in 0x6ffc84
,並在文本我讀,一個整數大小的4個字節(同樣與我的計算機)。所以,int i
應該分配4個字節。但int i
和int j
的存儲器地址之間的差異僅爲4位(0100
)。
差異不是意味着更大的東西,比如4個字節(0xffffffff
)?
請問我在哪裏混淆?
int i和int j的內存地址之間的差異僅爲4位 - 不,這些是字節地址。 – ThingyWotsit
地址是字節地址。 C不允許位尋址。 –
大多數CPU都是字節可尋址的。 C可以與CPU通話並請求以字節而不是位執行的內存讀取/寫入操作。使用C語言,我們可以至少逐字節地讀/寫內存位置,儘管在讀取並將其放在一個整數變量中後,我們可以用這些>><<&位運算符 – EsmaeelE