預處理指令:以#號開頭,可以寫在任何位置,在編譯之前執行
巨集定義檔案包含 條件編譯
一:巨集定義:無引數/有引數
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 ...