1.
  所有變量定義位于函數開始處。

2.
 盡量避免全局變量,全局變量需于實現文件中定義,頭文件中extern聲明。

3.
浮點零值比較采用區間值。

4.
保證正確的前提下盡量使用移位運算。

5.
If語句、switch語句優先處理出現概率大的情況。

6.
 指針與NULL比較反寫如:NULL==p。

7.
 循環嵌套時最長的循環放內層短的放外層。

8.
盡量不在循環體內修改循環變量。

9.
凡是無返回值、無參數、任意類型指針參數的函數均使用void或void指針。

10.
適當使用const,使用目的限于節省空間、提高效率、不允許修改或可能產生的函數參數修改。

11.
對于可變、多變的寄存器變量、多線程共享變量,在經過代碼優化處理的releas版本下需使用volatile類型修飾符修飾變量。

12.
多參數函數應使用結構體減少參數個數。

13.
負數右移操作時會帶上符號位,高位補零或補一取決編譯器。左移或右移時移動位數不能大于數據的存儲位數。

14.
 Release版下assert()語句無效,故非調試狀態下還是可能出現數據溢出而不報錯。

15.
使用宏定義#define定義文件路徑時候使用帶雙引號、雙反斜杠的字符串。宏定義函數時候盡可能的使用括號。宏定義中的換行接續后和行起始處保證無任何字符。

16.
一種變量名稱代表一段有限空間,其內容稱為值,c/c++中稱之為從左值到右值的轉換。另一種變量是一段有限空間的引用,同時規定空間的長度(數組)。

17.
創建動態二維數組(指向指針的指針)一維使用new char*[一維度] 或者 (char**)malloc(一維度).二維循環于一維下動態創建new char[二維度] 或者(char*)malloc(二維度)。釋放動態二維數組剛好相反,先循環釋放二維,再釋放一維。

18.
使用vector作為全局變量時候存在問題。release版下push_back()會出現錯誤,估計是vector本身具有動態擴展性而做為全局變量其空間大小是固定的。如果允許其變量使用push_back添加數據則可能導致堆數據破壞。解決辦法是將變量定義于類中并完成push_back再賦值于全局變量。

19.
利用字符創的結束標識'/0' (其ascII 碼是 0,0x00)而非空格(其ascII 碼是 32,0x20)可判斷字符串結束以否,并可以移動指針的方式計算字符串的大小。

20.
Dll庫,不但可以導出函數接口,也可以導出類。如:calss _declspec(dllexport) CALSSNAME{}; class _declspec(dllimport) CLASSNAME{};#pragma comment(lib,"path")。

21.
合理使用整數的/ 和 % 可取得整數(浮點數整數部分)的各個位數(%10 /10),合理使用h,p,q,t做循環下的指針移動可以構建鏈表和逆序鏈表。合理利用數組下標可實現折半循環逆序數組(字符串)

22.
int a= 4; (++a) += (a++)  a= ?

23.
字符數組的大小不要忘了最后的'/0'(字符指針不能使用sizeof(point)計算)。

24.
free后的內存空間只是被標記為了可重新分配,但作為該進程的內存塊他依然具有讀寫權限,為了避免內存混亂需要NULL指針避免野指針的存在。

25.
不存在下載文件夾的說法,只有下載文件數據和文件目錄信息,文件夾于本地創建。

26.
使用哈希查找加速檢索,哈希過程就是建立直接索引的過程,經過哈希處理的數據在查找時候可以通過函數計算后直接定位(哈希表的索引值相當于數組索引直接定位)到該數據。哈希不能做到百分百的唯一,所以需要處理哈希沖突,通常使用鏈表加關鍵值匹配。

27.
減少程序與外存的交互次數可提速程序執行,考慮使用鏈表一次加載多次使用、內存塊分配或者文件映射等方法。

28.
對大數據大文件的處理,考慮使用多線程均分工作任務的辦法從而可降低對處理器的占用率。