c c 注意事項

2021-06-21 12:45:55 字數 2300 閱讀 7515

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 方法二 直接使用字...