Program Development in Java Preface
程序開發原理
——抽象、規格與面向對象設計
Barbara Liskov 、John Guttag 著
楊嘉晨 等譯
關於翻譯風格:
多年來閱讀計算機類的著作及譯作,感覺總體的困難在於一大堆沒有標準譯名的技術術語。由於通行於工業界和學術界的還
C++ Tricks 3.2 標號、goto,以及switch的實現
3.2 標號、goto,以及switch的實現
goto語句及標號(label)是最古老的C語言特性,也是最早被人們拋棄的語言特性之一。像彙編語言中的jmp指令一樣,goto語句可以跳轉到同一函數體中任何標號位置:
void f()
{int i
C++ Tricks 3.1 左值右值與常量性(lvalue,rvalue & constant)
3.1 左值右值與常量性(lvalue,rvalue & constant)
首先要搞清楚的是,什麼是左值,什麼是右值。這裏給出左值右值的定義:
1、左值是可以出現在等號(=)左邊的值,右值是隻能出現在等號右邊的值。
2、左值是可
C++ Tricks 2.2 I386平臺的內存佈局
2.2 I386平臺的內存佈局
衆所周知,I386是32位體系結構。因此對於絕大多數I386平臺的C++編譯器而言,sizeof(int)=sizeof(long)=sizeof(void*)=4。當然C++標準對此沒有任何保證,我們
C++ Tricks
C++ Tricks 2.3 I386平臺C函數內部的棧分配
2.3 I386平臺C函數內部的棧分配
函數使用棧來保存局部變量,傳遞函數參數。進入函數時,函數在棧上爲函數中的變量統一預留棧空間,將esp減去相應字節數。當函數執行流程途徑變量聲明語句時,如
C++ Tricks 2.4 I386平臺C函數調用邊界的棧分配
2.4 I386平臺C函數調用邊界的棧分配
當調用一個函數時,主調函數將參數以聲明中相反的順序壓棧,然後將當前的代碼執行指針(eip)壓棧,然後跳轉到被調函數的入口點。在被調函數中,通過將ebp加
C++ Tricks 2.5 I386平臺的邊界對齊(Align)
2.5 I386平臺的邊界對齊(Align)
首先提問,既然I386上sizeof(int)==4、sizeof(char)==1,那麼如下結構(struct)A的sizeof是多少?
struct A{int i;char c;};
答案是sizeof(A)==8……1+5=8?
呵呵
C++ Tricks 2.6 I386平臺C函數的可變參數表(Variable Arguments)
2.6 I386平臺C函數的可變參數表(Variable Arguments)
基於前文(2.4節)分析,我們可以不通過函數簽名,直接通過指針運算,來得到函數的參數。由於參數的壓棧和彈出操作都由主調函數進行,所以被調函數
C++ Tricks 2.7 I386平臺的其它函數調用模型
2.7 I386平臺的其它函數調用模型
上文介紹的只是I386平臺上C函數調用的標準模型,被稱作__cdecl。事實上,Microsoft Visual C++編譯器還支持其它一些函數調用模型,所有調用模型名稱皆以雙下劃線開頭