C語言零碎知識點

C語言是一個有結構化程序設計、具有變量作用域以及遞歸功能的過程式語言。下面我們來看看C語言零碎知識點

C語言零碎知識點

1.編譯預處理

2.宏定義:標識符代替字符串;分爲有參數和無參數

3.#undef:刪除前面定義的宏的名字。

4.無參宏:宏名後不帶參數,一般形式:#define 標識符 字符串 ①宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號一起置換;②宏定義必須寫在函數之外,其作用域爲宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令;③宏名在源程序中若用引號括起來,則預處理程序不對其作宏帶換;④宏定義允許嵌套,在宏定義的字符串中可以使用已經定義的宏名。在宏展開時由預處理程序層層代換。⑤習慣上宏名用大寫字母表示,以便於與變量區別。⑥宏定義只是簡單的字符串代換,是在預處理完成的,而typedef是在編譯時處理的,它不是作簡單的`代換,而是對類型說明符重新命名。

5.帶參宏定義:#define 標識符 字符串(含有參數)

#define M(y) (y*y + 3*y)①宏名和參數表之間不能有空格出現;②形式參數不分配內存單元因此不必做類型定義只是符號代換,不存在值傳遞的問題;③形參是標識符,實參可以是表達式;④形參通常要用括號括起來以避免出錯;

6.文件包含:把指定的文件插入該命令行位置取代該命令行,從而把指定的文件和當前的源程序文件連成一個源文件。

1、#define

命令#define定義了一個標識符及一個串。在源程序中每次遇到該標識符時,均以定義的串代換它。ANSI標準將標識符定義爲宏名,將替換過程稱爲宏

替換。命令的一般形式爲:

#define identifier string

  注意:

1該語句沒有分號。在標識符和串之間可以有任意個空格,串一旦開始,僅由一新行結束。

2宏名定義後,即可成爲其它宏名定義中的一部分。

3宏替換僅僅是以文本串代替宏標識符,前提是宏標識符必須獨立的識別出來,否則不進行替換。例如:#define XYZ

this is a test,使用宏printf("XYZ");//該段不打印"this is a test"而打印"XYZ"。因爲預編譯器識

別出的是"XYZ"

4如果串長於一行,可以在該行末尾用一反斜槓' '續行。