- 相關(guān)推薦
C語(yǔ)言零碎知識(shí)點(diǎn)
C語(yǔ)言是一個(gè)有結(jié)構(gòu)化程序設(shè)計(jì)、具有變量作用域以及遞歸功能的過(guò)程式語(yǔ)言。下面我們來(lái)看看C語(yǔ)言零碎知識(shí)點(diǎn)。
1.編譯預(yù)處理
2.宏定義:標(biāo)識(shí)符代替字符串;分為有參數(shù)和無(wú)參數(shù)
3.#undef:刪除前面定義的宏的名字。
4.無(wú)參宏:宏名后不帶參數(shù),一般形式:#define 標(biāo)識(shí)符 字符串 ①宏定義不是說(shuō)明或語(yǔ)句,在行末不必加分號(hào),如加上分號(hào)則連分號(hào)一起置換;②宏定義必須寫在函數(shù)之外,其作用域?yàn)楹甓x命令起到源程序結(jié)束。如要終止其作用域可使用#undef命令;③宏名在源程序中若用引號(hào)括起來(lái),則預(yù)處理程序不對(duì)其作宏帶換;④宏定義允許嵌套,在宏定義的字符串中可以使用已經(jīng)定義的宏名。在宏展開時(shí)由預(yù)處理程序?qū)訉哟鷵Q。⑤習(xí)慣上宏名用大寫字母表示,以便于與變量區(qū)別。⑥宏定義只是簡(jiǎn)單的字符串代換,是在預(yù)處理完成的,而typedef是在編譯時(shí)處理的,它不是作簡(jiǎn)單的代換,而是對(duì)類型說(shuō)明符重新命名。
5.帶參宏定義:#define 標(biāo)識(shí)符 字符串(含有參數(shù))
#define M(y) (y*y + 3*y)①宏名和參數(shù)表之間不能有空格出現(xiàn);②形式參數(shù)不分配內(nèi)存單元因此不必做類型定義只是符號(hào)代換,不存在值傳遞的問(wèn)題;③形參是標(biāo)識(shí)符,實(shí)參可以是表達(dá)式;④形參通常要用括號(hào)括起來(lái)以避免出錯(cuò);
6.文件包含:把指定的文件插入該命令行位置取代該命令行,從而把指定的文件和當(dāng)前的源程序文件連成一個(gè)源文件。
1、#define
命令#define定義了一個(gè)標(biāo)識(shí)符及一個(gè)串。在源程序中每次遇到該標(biāo)識(shí)符時(shí),均以定義的串代換它。ANSI標(biāo)準(zhǔn)將標(biāo)識(shí)符定義為宏名,將替換過(guò)程稱為宏
替換。命令的一般形式為:
#define identifier string
注意:
1該語(yǔ)句沒(méi)有分號(hào)。在標(biāo)識(shí)符和串之間可以有任意個(gè)空格,串一旦開始,僅由一新行結(jié)束。
2宏名定義后,即可成為其它宏名定義中的一部分。
3宏替換僅僅是以文本串代替宏標(biāo)識(shí)符,前提是宏標(biāo)識(shí)符必須獨(dú)立的識(shí)別出來(lái),否則不進(jìn)行替換。例如:#define XYZ
this is a test,使用宏printf("XYZ");//該段不打印"this is a test"而打印"XYZ"。因?yàn)轭A(yù)編譯器識(shí)
別出的是"XYZ"
4如果串長(zhǎng)于一行,可以在該行末尾用一反斜杠' '續(xù)行。
【C語(yǔ)言零碎知識(shí)點(diǎn)】相關(guān)文章:
C語(yǔ)言數(shù)組知識(shí)點(diǎn)03-29
C語(yǔ)言數(shù)組知識(shí)點(diǎn)03-29
C語(yǔ)言循環(huán)結(jié)構(gòu)知識(shí)點(diǎn)03-29
C語(yǔ)言循環(huán)語(yǔ)句知識(shí)點(diǎn)03-29
C語(yǔ)言數(shù)組知識(shí)點(diǎn)總結(jié)12-06