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