關於這部分的筆記讓我糾結了幾個小時,我到底是該先寫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...