C語言拓展筆記

2021-08-01 02:52:56 字數 2904 閱讀 6182

一維陣列

陣列:陣列是一組有序資料的集合,陣列中每乙個元素的型別相同,用陣列名和下標來唯一確定陣列中的元素。

一維陣列的定義:型別說明符 陣列名[下標常量表示式];

二維陣列

二維陣列的定義:型別說明符 陣列名[常量表示式][常量表示式];

函式

1 無參函式

定義格式:

資料型別 函式名 /現代風格是:函式名(void) /

2 有參函式

定義格式:

資料型別 函式名(形參表) /現代風格是:函式名(帶型別形參表) /

函式的返回值通過函式體中的 return 語句獲得。

形式: return (x); return (x+y); return (x>y?x:y); //語句中圓括號亦可省略。

注意,如果函式值型別與 return 語句表示式值的型別不一致,以函式型別為準,數值型會自動進行型別轉換。

如果明確表示不需返回值,可用 void 作函式的資料型別。

3 函式的呼叫

函式和變數一樣,在其主調函式中,也必須先說明後使用。

注意關係: 函式定義——製造函式;

函式使用——說明準備使用;

函式呼叫——使用函式;

區域性變數與全域性變數

1 區域性變數

函式內部或復合語句內定義的變數。所有形參都是區域性變數。區域性變數只在本函式或本復合語句內才能使用,在此之外不能使用。

2 全域性變數

在函式之外定義的變數。

extern 預設允許本原始檔中其他函式及其他原始檔使用全域性變數。

static 只限本原始檔中使用。有效作用範圍 從定義變數位置開始直到本原始檔結束。

如果要將全域性變數作用範圍擴充套件到其他原始檔,只需在使用這些變數的檔案中對變數用 extern 加以說明。

編譯預處理

1 巨集(macro)

 不帶引數的巨集

一般形式: #define 識別符號 字串

作用:用識別符號(稱為巨集名)來代替字串。在預編譯時,將源程式中出現的巨集名,替換為字串 ,這一替換過程稱為「巨集展開」。

 帶引數的巨集

一般形式:#define 巨集名(參數列) 字串

帶引數的巨集在展開時,不是進行簡單的字串替換,而是進行引數替換。

2 檔案包含 #include

檔案包含命令的一般格式是:#include 「檔名」。

作用:預處理時,把檔名指定的檔案內容複製到本檔案,再對合併後的檔案進行編譯。

3 條件編譯

一般情況下,源程式中的所有行均參加編譯,但有時希望部分行在滿足一定條件才進行編譯,即對部分內容指定編譯的條件,稱為條件編譯。

有以下幾種條件編譯命令

 #ifdef

程式段 1
程式段 2
程式段 1
其中 識別符號 用#define 命令定義。

 #ifndef

與#ifdef 相反的條件編譯。

 #if

程式段 1
程式段 2
指標

指標是 c 語言的重要概念,也是 c 語言的特色。使用指標,可以使程式簡潔高效。在一般程式中,指標被廣泛使用。

指標 pointer 是乙個變數的位址。

指標變數,是乙個變數,其值是另乙個變數的位址。

結構體

結構體 structure 是一種資料型別,它把互相聯絡的資料組合成乙個整體。

 定義結構體型別

typedef struct strustudent;

 定義結構體變數:

strustudent student1, student2;

 結構體變數的引用

結構體變數名.成員名

結構體指標 通過指向運算子 -> 引用結構體中的成員。

共用體

當需要把不同型別的變數存放到同一段記憶體單元,或對同一段記憶體單元的資料按不同型別處理,則需要使用 共用體 資料結構。

例:把乙個整型變數、乙個字元型變數、乙個實型變數放在同乙個位址開始的記憶體單元中,

共用體的定義形式:

union 共用體名變數列表;

列舉型別

如果乙個變數只有幾種可能的值,可以定義為列舉型別。

列舉:將變數可能的值一一枚舉出來,變數的值只能取列舉出來的值之一。

用關鍵字 enum 定義列舉型別 例

typedef enum weekday ;

用 typedef 定義型別

關鍵字 typedef 用於定義一種新的資料型別,它代表已有資料型別,是已有資料型別的別名。 例:

typedef int integer; // 定義新資料型別 integer 它代表已有資料型別 int

typedef float real; // 定義新資料型別 real 它代表已有資料型別 float

通過上述定義後,以下兩行等價:

int i, j ; float a, b;

integer i, j; real a, b;

位運算

c 語言提供的位運算子:

& :按位與;

| :按位或;

^ :按位異或;

~ :取反;

<<:左移;

「>>」:右移;

C 學習筆記 C 對C語言的函式拓展

內聯函式是指用inline關鍵字修飾的函式。在類內定義的函式被預設成內聯函式。內聯函式從源 層看,有函式的結構,而在編譯後,卻不具備函式的性質 inline關鍵字只是給編譯器乙個建議,編譯器不一定會接受這種建議。一些編譯器,會將簡單的函式做內聯編譯,即使它沒有用inline關鍵字宣告 c 編譯器直接...

C語言巨集定義拓展

巨集定義的淺顯理解。引數巨集編譯可以完成一些簡單的邏輯控制,其具體形式如下 define text a if a printf yes else printf no void main void 其中反斜槓在c中表示換行符,其後不可新增任何字元,空格也不允許。這樣的巨集定義有點像乙個小函式,其中te...

C語言拓展實現Lua sleep函式

這幾天在做乙個小專案,其中用到了一些www.cppcns.com基本的api,例如sleep,獲取當前目錄等等,lua標準庫中沒有提供這些介面,雖然所第三方庫中也都有實現,但是要用的就那麼幾個函式,在乙個嵌入式系統中安裝那麼多第三方庫有點浪費資源,於是 勝利哥 寫了乙個socket的c實現,然後給我...