C C 常用函式易錯點

2021-06-21 07:20:30 字數 845 閱讀 9846

#include

void* memset( void* buffer, int ch, size_t count );

將記憶體中buffer的前count個

位元組的內容全部設定為ch指定的ascii值.經常用來初始化陣列.複製時

以位元組為單位,如果buffer是int long,或者其他型別的指標時,需要注意不一定為陣列的大小,應該是為 陣列大小*sizeof(型別).推薦直接使用sizeof(buffer)//buffer是陣列.

返回型別大小,以位元組為單位.編譯時確定的函式.傳遞的字串常量,陣列,顯示其占用大小,如果傳入指標,顯示指標大小.

對陣列和指標是不同的.

int *p=new int[5];

int q[5]=;

coutsizeof(q):q為int型別的陣列,輸出的是陣列所佔位元組數.4*5=20.

3.getchar

#include

int getchar( void );

這裡getchar返回的是整形而不是char,若出現下面**.

char c;

while((c=getchar())!=eof)

這裡c是被截斷int型別的一部分,c可能無法容下所有字元,特別是eof.

出現結果的可能,

1)某些字元截斷後與eof相同,導致程式在執行時正常終止

2)陷入死迴圈

3)有些編譯器確實對c進行了截斷處理,但是比較時,比較的 是getchar的返回值與eof,導致程式看似"正常執行".

C C 入門易錯點及常用小技巧

int型 絕對值在10 9範圍內的整數都可以定義為int型 long long 型 如果long long型賦值大於2 23 1的初值,需要在初值後面加ll,否則會編譯錯誤。float,double輸入輸出格式 使用printf f c 語句時,f是float和double型的輸出格式。而在使用sc...

C C 易錯總結

一 分析如下 char tostr int num s i 0 return s 本意為將整數轉化成字元陣列儲存,然後將這個字元陣列返回。經艱苦實踐,發現不能,原因是指標s是區域性變數,當函式返回時s即銷毀,當然不會返回成功了,只能把乙個無意義的位址傳回去。所以正確的處理方法可以這樣。void to...

C 函式過載易錯點

1.函式過載跟返回類型別無關。如果定義一下兩個函式 int func void func 如果int a func 那麼編譯器知道呼叫第乙個函式。但是c 允許直接使用函式而不需要返回值。func 這個時候就不知道呼叫哪個函式,編譯報錯。2.二義性。特別是double型別的隱式轉換的二義性。int m...