資料型別的本質

2021-10-01 08:26:37 字數 503 閱讀 2151

先說結論:

我們可以通過反彙編檢視程式對應的組合語言,了解其具體實現。

讓我們先通過下面的例子了解下組合語言:

void func (

)mov dword ptr [ebp-4]

,10h

mov 是指令,意思是把資料從「源位址」移動到「目的位址」;

10h 就是「源位址」,只不過這裡用了乙個常數而不是位址

dword ptr [ebp-

4] 就是「目的位址」。

其中,ebp你可以理解為乙個指標,ebp-

4則是向下4的偏移處(剛好就是na的位址)。

dword ptr意思是把剛才那個偏移處(na的位址)解釋為雙字指標,即指向4個位元組的記憶體空間的指標。

驗證:

int

main()

反編譯:

對程式進行反彙編,我們可以有以下結論:

參考:

資料型別的本質

1 對於問題理解的深度,決定能不能成為乙個高手 2 概念不清晰,是產生bug的根源 本質 固定大小記憶體塊的別名 a 10 a a 陣列資料型別 關鍵點 1 陣列型別 2 陣列指標 3 陣列型別與陣列指標型別的關係 求資料型別佔的位元組數 sizeof 資料型別可以起別名嗎?tpedef 重定義資料...

01 02 資料型別本質

include include include 給型別起別名 類似於科比的全名叫 科比,布萊恩特,使用typedef 可以叫他科比 typedef unsigned int u32 typedef和結構體結合使用 struct mystruct typedef struct mystruct2 tm...

1 20 資料型別本質

include include include 資料型別 基本型別 int float double char void 使用者定義型別 列舉型別 enum 結構型別 陣列 結構struct 聯合union 類class 指標型別 資料型別的本質 資料型別可以理解為變數的模具,固定記憶體大小的別名 ...