1.
  所有變量定義位于函數(shù)開(kāi)始處。

2.
 盡量避免全局變量,全局變量需于實(shí)現(xiàn)文件中定義,頭文件中extern聲明。

3.
浮點(diǎn)零值比較采用區(qū)間值。

4.
保證正確的前提下盡量使用移位運(yùn)算。

5.
If語(yǔ)句、switch語(yǔ)句優(yōu)先處理出現(xiàn)概率大的情況。

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

7.
 循環(huán)嵌套時(shí)最長(zhǎng)的循環(huán)放內(nèi)層短的放外層。

8.
盡量不在循環(huán)體內(nèi)修改循環(huán)變量。

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

10.
適當(dāng)使用const,使用目的限于節(jié)省空間、提高效率、不允許修改或可能產(chǎn)生的函數(shù)參數(shù)修改。

11.
對(duì)于可變、多變的寄存器變量、多線程共享變量,在經(jīng)過(guò)代碼優(yōu)化處理的releas版本下需使用volatile類型修飾符修飾變量。

12.
多參數(shù)函數(shù)應(yīng)使用結(jié)構(gòu)體減少參數(shù)個(gè)數(shù)。

13.
負(fù)數(shù)右移操作時(shí)會(huì)帶上符號(hào)位,高位補(bǔ)零或補(bǔ)一取決編譯器。左移或右移時(shí)移動(dòng)位數(shù)不能大于數(shù)據(jù)的存儲(chǔ)位數(shù)。

14.
 Release版下assert()語(yǔ)句無(wú)效,故非調(diào)試狀態(tài)下還是可能出現(xiàn)數(shù)據(jù)溢出而不報(bào)錯(cuò)。

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

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

17.
創(chuàng)建動(dòng)態(tài)二維數(shù)組(指向指針的指針)一維使用new char*[一維度] 或者 (char**)malloc(一維度).二維循環(huán)于一維下動(dòng)態(tài)創(chuàng)建new char[二維度] 或者(char*)malloc(二維度)。釋放動(dòng)態(tài)二維數(shù)組剛好相反,先循環(huán)釋放二維,再釋放一維。

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

19.
利用字符創(chuàng)的結(jié)束標(biāo)識(shí)'/0' (其ascII 碼是 0,0x00)而非空格(其ascII 碼是 32,0x20)可判斷字符串結(jié)束以否,并可以移動(dòng)指針的方式計(jì)算字符串的大小。

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

21.
合理使用整數(shù)的/ 和 % 可取得整數(shù)(浮點(diǎn)數(shù)整數(shù)部分)的各個(gè)位數(shù)(%10 /10),合理使用h,p,q,t做循環(huán)下的指針移動(dòng)可以構(gòu)建鏈表和逆序鏈表。合理利用數(shù)組下標(biāo)可實(shí)現(xiàn)折半循環(huán)逆序數(shù)組(字符串)

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

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

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

25.
不存在下載文件夾的說(shuō)法,只有下載文件數(shù)據(jù)和文件目錄信息,文件夾于本地創(chuàng)建。

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

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

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