編寫C程式容易犯錯的地方

2021-07-10 06:26:09 字數 596 閱讀 9446

編寫c程式要注意的地方非常多,稍不留神就會掉入萬劫不復的「坑」,以下就列舉一些:

陣列、結構體,以及動態建立的記憶體區域必須初始化。

如果不進行初始化,變數值是不可預估的!例如:

struct node

node node;

memset(&node,0,sizeof(node));

if(node->next==null) //如果不初始化,node->next的值是不可預估的,而不是設想中的0x00

複製字串的時候,要注意棧、堆溢位的問題
char message[10];

memset(message,0,10);

gets(message);//gets從標準輸入裝置讀字串函式。可以無限讀取,不會判斷上限,以回車結束讀取

strcpy(message,"1234567890abc");//複製字串,但沒有考慮message的長度

正確的做法:

strncpy(message,"1234567890abc",9); //複製9個字元,並確保最後以\0結尾

巨集定義的使用容易犯錯的地方 提醒

不經意間犯了乙個小錯誤,反映出來自己的基礎還是不夠紮實.現在列出來,給自己提個醒.define my func 0 ifdef my func my function 在這種情況下,無論 define my func 0 還是 define my func 1,此處永為真,因為my func 已經定...

C 容易被人忽略的地方

const int r 42和int r 42前者可以編譯過,而後者不可以。double dval 3.14 int ri dval dval 10 編譯出現error c2440 初始化 無法從 double 轉換為 int 但下面的就可以 double dval 3.14 const int r...

C C之易犯錯的地方

1 cin char str new char 100 cin str cout str endl 例如 輸入 ajfgjsfg djfhsdjgh sdjgsdjgj 輸出 ajfgjsfg說明cin讀取到直到遇到空格。2 strlen char str1 cout strlen str1 end...