一、編譯預處理:
1.巨集定義: 以 #define 開始,分為帶引數和不帶引數兩種。
不帶引數的巨集定義: #define pi 3.14
巨集替換只是巨集名譽字串之間的簡單替換,不做其他任何資料型別和合法性檢查,也不分配記憶體空間。
帶引數的巨集定義: #define mul(x , y) (x)*(y)
注意:寫帶引數巨集定義時,巨集名與左括號之間不能出現空格,否則空格右邊的字元都回作為替代字串的一部分。
#define add (x,y) x+y //會認為把add巨集替換成 (x,y) x+y
帶引數的巨集與函式的區別:
函式呼叫在程式執行時處理,在棧中分配記憶體單元。巨集帶環則是在編譯前進行的,在替換時並不分配記憶體單元,不進行值傳遞,沒有返回值得概念。
函式呼叫時,先計算出實參表示式的值,然後賦值給形參。而巨集只是進行簡單的替換,不做任何計算。
函式中的形式引數和實際引數都要有型別,且兩者要一致,如果不一致,系統將自動進行型別轉換。而巨集不存在型別問題。
巨集替換只占用編譯時間,因為實在編譯前完成的,而函式呼叫要占用執行時間。
#define #undef(undef提前終止巨集定義的作用域)。
2.檔案包含: #include 《檔名》或 #include "檔名"
3.條件編譯:只編譯原程式中滿足條件的程式段。1.使生成的目標程式短小,減少程式執行時記憶體。2.方便除錯。
C語言 基礎部分
無符號整型的取值範圍是0 65535 2 16 1 有符號整型的取值範圍是 32768 32767 2 8 2 8 1 l u可以是小寫 num 100l l表示長整型 num 100u u表示無符號整型 num 0123 0用來表示八進位制,所有數字均需小於8 num 123 十進位制數不需要新增...
C 基礎 C語言部分2
一 列舉型別 enum 列舉型別名 enum weekday 二 全域性變數 在函式外定義,如 int a 但是引用的時候要使用 當區域性變數與全域性變數同名的時候,不同名的時候直接用a就可以了 a 來引用。三 變數的儲存類別 1.auto變數 只能修飾區域性變數,auto變數的空間在棧中分配,分配...
C語言基礎4
基 礎 概 括 陣列 陣列 由同一種資料,型別組成。陣列中只能存放一種型別的資料。元素 陣列大括號裡的數字。陣列元素的個數只能是常量值。定義陣列 陣列的型別 陣列名 數值列印格式 printf 陣列名 d d n 陣列名 i 遍歷 按順序檢視陣列中每乙個元素。小語法 只要確定大括號中元素的個數,就能...