先從乙個程式的記憶體空間說起
接下來用彙編來**編譯器如何做到的
a.change();
00214040 lea ecx, [a] //呼叫成員函式時將物件a的位址賦值給ecx暫存器
00214043 call a::change(0211447h) //call函式
void change(void)
00fe4716 pop edi
00fe4717 pop esi
00fe4718 pop ebx
00fe4719 mov esp, ebp
00fe471b pop ebp
00fe471c ret
C學習 指標
1 指標 a int a 表示乙個記憶體空間,這個空間用來存放乙個整數 int b int a 表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放整數的空間,即 a 中提到的空間 c int a 表示乙個記憶體空間,這個空間用來存放乙個指標,這個指標指向乙個存放指標的空間,並且指向的...
C 指標學習
一 指標的概念 如果在程式中定義乙個變數,在編譯時系統會自動給這個變數分配記憶體單元,並根據程式中的定義的變數型別,分配一定長度的記憶體空間,這樣的記憶體單元裡放著變數的值。為了便於記憶體單元的訪問,系統為每乙個記憶體單元分配乙個位址。在變數的生存期內,不管以後對變數如何賦值,其記憶體位址都是固定不...
C 學習 指標
關於二級指標的學習遇到了一些困惑,也有了一些不知是否正確的結論。在文章中留個底以記錄學習過程。author 以下是一些暫時的結論 1.將每個變數名都理解成位址 2.注意區分堆與棧中的變數 3.表示取左值 根據位址跳轉 表示取位址 宣告時表示建立乙個引用 ex.char string aaa char...