C语言杂记1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?C語言雜記
? ? ? ?注意signed int 與 unsigned int 之間的比較,與運算因為當int 型變量為-1時很可能被升級成無符號整型,就導致取反+1這種運算的產生,出現無法控制的很大的數。
? ? ? malloc(strlen(str))絕對錯誤地語句,考慮字符串需要+1.
? ? ? NULL 與NUL的區別:
? ? ? ? ? ? ? ?NUL:用于結束一個字符串。
? ? ? ? ? ? ? ?NULL:表示什么也不做(空指針)。
? ? ?在switch語句中defaut關鍵字可以放在任意位置,編譯器不檢查,可能導致無意的跳過case.
? ? ?注意變量的作用域如果過寬會對庫函數造成影響。其中有一個all -- or -- nothing 原則,一個符號要么全局可見,要么對其他文件都不可見。
? ? ?C語言似乎比其他語言更接近標記歧義性的曲折邊緣。
? ? 結合性:
? ? ? ? ? ? ? 只用于表達式中出現兩個以上相同優先級的操作符的情況,用于消除歧義。
? ?gets()函數導致蠕蟲病毒,并且現在的BUG還沒有清除。
? ?sizeof的操作數最好加上括號,不然容易引起歧義如(sizeof*p)
? ? C語言 還有最大一口策略,如果下一種標記有超過一組的解釋方案,編譯器將自動選取能組成最長字符序列的方案。
? ?注意const 的用法
? ?指針的聲明方法
? ?結構體的內存對齊問題
? ?為了代碼的可讀性,變量的聲明應該與類型的聲明分開
? ?一個整形參數一般會被傳遞到寄存器中,而結構體參數很可能會被傳遞到堆棧中。
? define 與typedef的區別
? ? ?1.define與其他的類型相配進行擴展,typedef卻不行
? ? ?2.在連續變量出現時,define只控制前一個變量,typedef則控制所有的變量
? ? ?
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載于:https://www.cnblogs.com/zmrlinux/p/4921434.html
總結
- 上一篇: 记录常用工具
- 下一篇: Spark K-Means