1,在使用變數前初始化他們。包括指標可初始化為null。2,返回棧裡的物件是危險的,尤其不能返回指標。
char *getbuff()是錯誤的。
3,char型別的符號問題。
4,不要依賴表示式的運算次序,一般編譯器都進行優化,先進行函式求值,再求複雜
表示式,再處理簡單資料。
5,函式形參的求值是沒有次序的。
6,轉義符號必須小寫。
7,三元轉義,
??= #,??( [,??< ,??' ^,??! |,??- ~
8,陣列和陣列的指標只有在形參使用中才是等價的,因為形參是不會把陣列傳入的。
9,陣列下標運算子可以交換位置。
char*p = &2["kdkkd"];
10,如果不想修改陣列引數,就把它聲名為 const.
11,常量指標
const int *p = & i;
int const *p = &i;//不能通過指標修改整數
是等價的。
int *const p =&i 則不同。//不能使指標指向別的變數了。
12,避免浮點數相等的比較。
13,,運算子執行了其前後的表示式,僅返回右邊的表示式的值。
14 ,注意typedef的應用。
int (*myfun)();和typedef int (*myfun)() myfun;
15,使用位來儲存標誌位方法是使用結構。
16,指標不可做+但可做-運算。並且弄清指標+1發生了什麼。
17,關於想要修改指標的值的問題。void nextspace(char ** pstr);呼叫時使用
char *p;nextspace(&p);這樣將修改指標本身,而不是指標指向的值。如果你
想在函式nextspace中為p申請一塊記憶體,並在返回後能使用p,就可以這樣做。
c++18 , for ,while中聲名的變數在出了迴圈後仍有效。
19,在條件語句中聲名的變數僅在作用域內有效。
20,c++是不允許跳躍乙個初始化變數語句的。在case中的聲名的區域性變數必須使用
括號封閉它。
21,要使用類庫中的被保護的成員,可以從它繼承乙個類,聲名乙個返回該成員引用
型的共有函式。
22,成員指標
class a
int a::*pint = &a::a;
a a;
int x = a.*pint;
事實上成員指標主要用途是指向成員函式的。
class a
void(a::*pfunc)(int) = &a::funca;
a a;
a *pa = &a;
(a.*pfunc)(8);
(pa->*pfunc)(8);
23,靜態的成員函式僅能訪問靜態的資料成員。
24,可以使用靜態的指標指向活動的物件
class window
void onacive()
private :
static window* pactive;
}25,建議使用const代替define 和enum.
26,c++呼叫c函式可聲名
extern "c"
27,為使標頭檔案在c和c++中移植
#ifdef _cplusplus
extern "c"
#endif
28可能導致記憶體丟失的原因
1,忘記釋放。
2 ,程式中有的分支不會釋放已經分配的記憶體。(常見)
3,給已經指向了分配記憶體的指標分配記憶體。
29,類中的指標成員一定要初始化,可以是null。
30,當乙個類中有指向其他資源的指標,並由類本身釋放,那麼要寫拷貝建構函式。
31,在過載=運算子時,應考慮x= x型問題,解決的辦法是判斷是否是它自己,如果是
直接返回。
if(this = &argvalue) return *this;
32,當類無須拷貝,則聲名拷貝建構函式為私有並可不實現。
33,賦值運算子不能繼承。
34,除建構函式,其他情況下給類的指標賦值必須刪除原來的內容。
35,如果析構函式外釋放指標,應該緊隨其後,把它賦值為null。
36,可以使用乙個初始化函式和關閉函式,而不寫建構函式和析構函式。
37,使用delete array釋放用new分配的陣列。
38,說明拷貝建構函式時必須說明為常量引數。
39,析構函式為虛。
40,如果對於類的物件之間的指標所指向的內容變化不大,可使用引用計數來確定拷貝
析構函式是否刪除指標釋放記憶體。
C C 的注意事項
最近除錯c語言程式,出了一些錯誤,費了很大的力氣才找到這些bug。現在把這些錯誤記錄下來,同時做一些程式設計上的原則上的約束,希望能達到兩個目的 1 看到類似的情況,能馬上定位知道是什麼錯誤。2 不在犯這種錯誤。將64位整型轉換為32位整型,貌似是沒什麼問題。但是在做多結點間資料通訊的時候,這個不注...
C C 程式設計注意事項 一
所有變數定義位於函式開始處。盡量避免全域性變數,全域性變數需於實現檔案中定義,標頭檔案中 extern 宣告。浮點零值比較採用區間值。保證正確的前提下盡量使用移位運算。if 語句 switch 語句優先處理出現概率大的情況。指標與null 比較反寫如 null p 迴圈巢狀時最長的迴圈放內層短的放外...
C C 字元陣列 注意事項
c c 中,字元陣列的輸入有很多種,但是每種情況都是不一樣的,一定要把字元陣列的每種輸入輸出的情況弄清楚,這樣才能在不同的情況下使用不同的方法。1 字元陣列的初始化方法 一 如果要初始化的字串種還有空格,應該把空格也當作乙個字元輸入,注意,字元是使用單引號。char str 15 方法二 直接使用字...