資料與記憶體(C)

2021-05-26 00:11:15 字數 1135 閱讀 1212

關於這部分的筆記讓我糾結了幾個小時,我到底是該先寫printf、scanf,

還是先寫資料在記憶體中存放的形式。不管怎麼糾結也沒用,還是先寫資料吧!

前面的筆記有提到計算機cpu採用的是二進位制數制,只能進行二進位制的數值運算。

在實際操作中,由於二進位制太長太多,加上十六進製制與二進位制之間轉換十分方便,

所以一般用十六進製制表示其二進位制數值,因此,可以看一些偵錯程式中的分析碼都

為十六進製制。

二進位制數乙個數等於1位(bit)

乙個十六進製制數等於4位(bit)

一位元組(byte)等於8位(bit)

一位元組等於兩十六進製制數

基本資料型別(32位作業系統下vc++6.0)

short int 2個位元組    16位

int       4個位元組    32位

long int  4個位元組    32位

float     4個位元組    32位

double    8個位元組    64位

char      1個位元組     8位

#include

int main(int argc, char* argv)

通過vc++6.0的偵錯程式檢視資料abcde的情況

位址       資料

0012ff68    00 00 00 00

0012ff6c    00 00 24 40   => e => 10.0  => 0x4024 0000 0000 0000

0012ff70    00 00 20 41   => d => 10.0f => 0x4120 0000

0012ff74    0a 00 cc cc   => c => 10    => 0x000a

0012ff78    0a 00 00 00   => b => 10    => 0x0000 000a

0012ff7c    61 cc cc cc   => a => 'a'   => 0x61

通過上面機器十六進製製碼的情況可以得出:

1. 先定義的資料在高位址,後定義的在低位址,及從高到低進行位址分配。

2. 單個資料在記憶體儲存方式是以乙個位元組為單位,從高到低存放在位址裡。

3. 根據資料型別所佔位元組數的不同,可以看出資料按4個位元組一組自動對齊。

C 類與記憶體

在c 類成員中引用,常量,靜態變數,靜態函式等,它們被分配在記憶體的那個地方,有哪些特性。1.常量和引用必須過載建構函式進行初始化,否則就會編譯失敗,new 的時候再堆上,直接建立在棧上。值得說明的是 c 類成員常量與c語言常量一樣,通過指標可以修改其的值。類的外部常量一旦初始化以後,不會讀記憶體,...

C指標與記憶體

指標是c c 中重要的構造型別,指標賦予了 c c 程式直接訪問和修改記憶體的能力。c c 的許多重要應用,如編譯 os 嵌入式開發都依賴於這種能力。馮諾依曼體系的計算機記憶體儲存指令和資料,我們可以將其抽象為指令區和資料區 當然實際情況要複雜得多 資料區中包含棧 stack 和堆 heap 區,棧...

C 記憶體與指標

1 int year year 1000 記憶體位址在0028ff44 23 int ptr year int 即宣告了乙個指標型變數,指標是乙個變數,儲存的是乙個變數的位址。45 在宣告語句中,可以把 看作是指標的型別 67 ptr year year 取變數的位址,即ptr year 0028f...