C語言基礎三

2021-06-21 03:05:46 字數 1953 閱讀 2287

預處理指令:以#號開頭,可以寫在任何位置,在編譯之前執行

巨集定義檔案包含    條件編譯

一:巨集定義:無引數/有引數

num叫做巨集名,6是用來替換巨集名的字串

#define num 10//條件一般需要用到巨集定義

#if 條件1//不可以放變數

。。。code1。。。 //如果條件1成立,則把code1編譯程序式

#elif 條件2

。。。code2。。。

#else

。。。code3。。。

#endif

其他用法:

#if defined(max)//#if !defined(max)

。。。code。。。

#endif

#ifdef max//#ifndef max

@巨集定義和函式雖然相似,但巨集定義在編譯之前作好計算,函式是在程式執行時呼叫,所以巨集定義效率更高。

@巨集定義不檢測型別。但是替換之後,編譯器會檢查

@巨集定義不涉及型別判斷

二:條件編譯:程式中需要哪段**編譯哪段

#define num 10//條件一般需要用到巨集定義

#if 條件1//不可以放變數

。。。code1。。。 //如果條件1成立,則把code1編譯程序式

#elif 條件2

。。。code2。。。

#else

。。。code3。。。

#endif

其他用法:

#if defined(max)//#if !defined(max)

。。。code。。。

#endif

#ifdef max//#ifndef max

三:檔案包含:include

#include 《檔名》:直接到c語言庫函式標頭檔案所在的目錄中尋找檔案

#include "檔名":在原程式當前目錄中尋找,若找不到,則在系統path中找,最後才在c語言庫中找。

@允許巢狀包含,不允許遞迴包含(相互包含)

@防止標頭檔案裡面的內容重複包含:每乙個標頭檔案中都使用條件編譯

變數型別:

c語言根據儲存型別的不同,可以把變數分為:自動變數,

靜態變數

,暫存器變數。

對應於儲存的地方有3種:執行時堆疊,

普通記憶體

,硬體暫存器

@自動變數:被auto修飾的區域性變數都是自動變數,預設情況下區域性變數都是自動變數,auto可以省略;

全域性變數不可能是自動變數:生命週期長 ,很多地方都有。

@靜態變數:

1.包括所有全域性變數。

2.static修飾的區域性變數(即改變生命週期,但沒有改變作用域)

@暫存器變數:儲存在硬體暫存器中的變數

int main()
被register修飾的自動變數都是暫存器變數

只限於int , char 和指標型別的變數使用

一般將一些使用頻繁的自動變數定義為暫存器變數,其他用記憶體。

C 語言基礎(三)

自定義函式的一般形式 注意 包含的內容可以省略,資料型別說明省略,預設是int型別函式 函式名稱遵循識別符號命名規範 自定義函式盡量放在main函式之前。如果要放在main函式後面的話,需要在main函式之前先宣告自定義函式,宣告格式為 資料型別說明 函式名稱 引數 自定義乙個sayhello 函式...

c語言基礎(三)

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。分別為 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應...

C語言基礎(三)

指標 不論什麼指標型別,指標的大小總是由機器位數決定,例如32位客戶端指標占用4個位元組 取位址 在定義時表示指標變數,在用時表示取值p p指向的位址 p p指向的位址值 int p p 3 上述會出現段錯誤,修改了未定義的記憶體,指標指向不明 p 與 p p的區別?p 指p指向內容,然後內容 1 ...