1.
所有變量定義位于函數(shù)開始處。
2.
盡量避免全局變量,全局變量需于實現(xiàn)文件中定義,頭文件中extern聲明。
3.
浮點零值比較采用區(qū)間值。
4.
保證正確的前提下盡量使用移位運算。
5.
If語句、switch語句優(yōu)先處理出現(xiàn)概率大的情況。
6.
指針與NULL比較反寫如:NULL==p。
7.
循環(huán)嵌套時最長的循環(huán)放內(nèi)層短的放外層。
8.
盡量不在循環(huán)體內(nèi)修改循環(huán)變量。
9.
凡是無返回值、無參數(shù)、任意類型指針參數(shù)的函數(shù)均使用void或void指針。
10.
適當(dāng)使用const,使用目的限于節(jié)省空間、提高效率、不允許修改或可能產(chǎn)生的函數(shù)參數(shù)修改。
11.
對于可變、多變的寄存器變量、多線程共享變量,在經(jīng)過代碼優(yōu)化處理的releas版本下需使用volatile類型修飾符修飾變量。
12.
多參數(shù)函數(shù)應(yīng)使用結(jié)構(gòu)體減少參數(shù)個數(shù)。
13.
負(fù)數(shù)右移操作時會帶上符號位,高位補(bǔ)零或補(bǔ)一取決編譯器。左移或右移時移動位數(shù)不能大于數(shù)據(jù)的存儲位數(shù)。
14.
Release版下assert()語句無效,故非調(diào)試狀態(tài)下還是可能出現(xiàn)數(shù)據(jù)溢出而不報錯。
15.
使用宏定義#define定義文件路徑時候使用帶雙引號、雙反斜杠的字符串。宏定義函數(shù)時候盡可能的使用括號。宏定義中的換行接續(xù)后和行起始處保證無任何字符。
16.
一種變量名稱代表一段有限空間,其內(nèi)容稱為值,c/c++中稱之為從左值到右值的轉(zhuǎn)換。另一種變量是一段有限空間的引用,同時規(guī)定空間的長度(數(shù)組)。
17.
創(chuàng)建動態(tài)二維數(shù)組(指向指針的指針)一維使用new char*[一維度] 或者 (char**)malloc(一維度).二維循環(huán)于一維下動態(tài)創(chuàng)建new char[二維度] 或者(char*)malloc(二維度)。釋放動態(tài)二維數(shù)組剛好相反,先循環(huán)釋放二維,再釋放一維。
18.
使用vector作為全局變量時候存在問題。release版下push_back()會出現(xiàn)錯誤,估計是vector本身具有動態(tài)擴(kuò)展性而做為全局變量其空間大小是固定的。如果允許其變量使用push_back添加數(shù)據(jù)則可能導(dǎo)致堆數(shù)據(jù)破壞。解決辦法是將變量定義于類中并完成push_back再賦值于全局變量。
19.
利用字符創(chuàng)的結(jié)束標(biāo)識'/0' (其ascII 碼是 0,0x00)而非空格(其ascII 碼是 32,0x20)可判斷字符串結(jié)束以否,并可以移動指針的方式計算字符串的大小。
20.
Dll庫,不但可以導(dǎo)出函數(shù)接口,也可以導(dǎo)出類。如:calss _declspec(dllexport) CALSSNAME{}; class _declspec(dllimport) CLASSNAME{};#pragma comment(lib,"path")。
21.
合理使用整數(shù)的/ 和 % 可取得整數(shù)(浮點數(shù)整數(shù)部分)的各個位數(shù)(%10 /10),合理使用h,p,q,t做循環(huán)下的指針移動可以構(gòu)建鏈表和逆序鏈表。合理利用數(shù)組下標(biāo)可實現(xiàn)折半循環(huán)逆序數(shù)組(字符串)
22.
int a= 4; (++a) += (a++) a= ?
23.
字符數(shù)組的大小不要忘了最后的'/0'(字符指針不能使用sizeof(point)計算)。
24.
free后的內(nèi)存空間只是被標(biāo)記為了可重新分配,但作為該進(jìn)程的內(nèi)存塊他依然具有讀寫權(quán)限,為了避免內(nèi)存混亂需要NULL指針避免野指針的存在。
25.
不存在下載文件夾的說法,只有下載文件數(shù)據(jù)和文件目錄信息,文件夾于本地創(chuàng)建。
26.
使用哈希查找加速檢索,哈希過程就是建立直接索引的過程,經(jīng)過哈希處理的數(shù)據(jù)在查找時候可以通過函數(shù)計算后直接定位(哈希表的索引值相當(dāng)于數(shù)組索引直接定位)到該數(shù)據(jù)。哈希不能做到百分百的唯一,所以需要處理哈希沖突,通常使用鏈表加關(guān)鍵值匹配。
27.
減少程序與外存的交互次數(shù)可提速程序執(zhí)行,考慮使用鏈表一次加載多次使用、內(nèi)存塊分配或者文件映射等方法。
28.
對大數(shù)據(jù)大文件的處理,考慮使用多線程均分工作任務(wù)的辦法從而可降低對處理器的占用率。