1.malloc()函式和calloc()函式的區別是前者不初始化所分配的記憶體空間, 而後者會初始化所分配的記憶體空間的每一位為零。
2.在程式退出main()函式後, 要想在進行一些操作, 需要借助c庫函式atexit()。 利用atexit()函式可以在程式終止前完成一些其他的操作。如果將一組函式指標傳遞給atexit()函式, 那麼在程式退出main()函式後(此時程式還未終止)就能自動呼叫這組函式, 在使用atexit()函式時要注意:
(1)由atexit()函式指定的想在程式終止前執行的函式要用關鍵字void說明, 並且不能夠帶引數。
(2)由atexit()函式指定的函式在入棧時的順序和呼叫的順序相反, 即是一種後進先出的原則。如:
執行結果:
run main
run aftermain2
run aftermain1
3.匯流排錯誤和段錯誤
(1)匯流排錯誤幾乎都是由於未對齊的讀或寫造成的。它之所以稱為匯流排錯誤, 是因為出現未對齊的記憶體訪問請求時, 被堵塞的元件就是位址匯流排。對齊的意思就是資料項只能儲存在位址是資料項大小的整數倍的記憶體位置上。
(2)段錯誤通常都是由於引用了乙個非法的記憶體位址造成的。
4.memcpy()用來將原記憶體位址的前n個位元組的內用拷貝到目的位址, 源位址和目的位址不能重疊, 否則行為未定義。 當重疊時, 可以用memmove()函式, 它能夠處理重疊的情況, 不過執行的效率上略慢些。
5. int strcasecmp(const char *str1, const char *str2)這個函式忽略大小寫的差異, 進行字串的比較。
C 要點總結
1 隱式宣告 將成員函式直接定義在類的內部 2 顯式宣告 inline標示 2 在類中,使用inline定義內聯函式時,必須將類的宣告和內聯成員函式的定義都放在同乙個檔案中,否則編譯時無法進行 置換。1 物件賦值語句進行物件賦值時,兩個物件的型別必須相同 2 資料成員佔儲存空間,成員函式佔相同的函式...
C語言要點
一關鍵字 1.static 第乙個作用 修飾變數。變數又分為區域性和全域性變數,但它們都存在記憶體的靜態區。由於被static修飾的變數總是存在記憶體的靜態區,所以即使這個函式執行結束,這個靜態變數的值還是不會被銷毀,函式下次使用時仍然能用到這個值。static int j void fun1 vo...
C語言解惑要點
1 運算子的優先順序 2 型別轉換 2.1 有符號與無符號數 結果輸出為 2 2 1 2147483647 1 2147483647 2.2 浮點數與整數 3 控制流 這一部分主要需要注意if else之間的巢狀時的配對情況,及迴圈語句的終止條件與狀態。4 轉義字元 除了 n t這一類的轉義字元,還...