1. 程式人生 > >C語言知識點大總結

C語言知識點大總結

一、C語言基本常識:

1. C語言由函式構成的

2. main函式是程式的入口

3. C語言中不能出現中文或中文字元(註釋和字串除外)

關鍵字: C語言提供的表示特殊含義的單詞

特點: 1.全部小寫2.Xcode中是紫褐色

識別符號: 程式設計師自己在程式碼中為某些東西起的名字

規則: 1.字母,數字,下劃線組成

2.嚴格區分大小寫

3.不能以數字開頭

4.不能與關鍵字重名

規範: 駝峰表示法

註釋: 對程式碼的解釋說明,它是程式設計師看的,不參與編譯

單行註釋多行註釋

多行註釋可以巢狀單行註釋,但多行註釋不能巢狀多行註釋

資料: 靜態資料: 儲存在硬碟上的資料

動態資料: 記憶體中的資料

常量: 不可改變的量

變數: 可以改變的量

二、進位制

十進位制

二進位制0b 0B

八進位制0

十六進位制0x 0X  %x %X

位運算:

            &  |  ^  ~  >>  <<

三、資料型別

1、基本資料型別

int4位元組 %d,%i

float4位元組  %f

double8位元組  %lf

char1位元組 %c

列舉: 列舉本質是整形(enum)

場合: 當某個東西只有固定的幾個取值的時候,使用列舉

特點: 先定義列舉型別,根據列舉型別定義列舉變數

2

、構造型別

陣列: 用來存放相同資料型別的多個數據的集合

定義: 資料型別資料名稱[元素個數];

遍歷: 把所有元素都輸出看一下(迴圈)

結構體: 多個數據放在一起可以表示特定的含義,我們就把它們組成結構體

特點: 要先定義結構體型別,再定義結構體變數(struct)

結構體與函式的關係: 就如同基本資料型別和函式的關係

3、指標

指標就是地址

指標變數: 用來儲存地址的變數

1.指標只有初始化了才可以訪問它所指向的儲存空間

2.如果一個指標沒有初始化,它裡面是垃圾值,稱為野指標

3指標不能直接賦值一個整形數

基本資料型別的指標: 指向基本資料型別的指標

格式

: 資料型別 * 指標變數名稱;

結構體指標: 指向結構型別的指標

格式: 結構體型別 * 指標變數名稱;

1.訪問其所指向的結構體成員的方式:

1): (*指標變數名稱).成員名稱

2): 指標變數名稱->成員名稱

陣列指標: 指向陣列的指標

格式: 所指向的陣列的資料型別 (*指標變數名)[所指向的陣列的元素個數];

1.這種指標與二維陣列名是等價的

函式指標: 指向函式的指標

格式: 所指向的函式的返回值型別 (*指標變數名)(所指向的函式的形參列表...)

1.通過函式指標呼叫函式

1): (* 指標變數名稱)(實參列表)

2): 指標變數名稱(實參列表)

4、運算子

1.算術運算子

                    + - * / %

2.賦值運算子(除逗號運算子,優先順序最低的運算子)

                    = += -= *= /= %=

3.自增自減運算子

                    ++a; 先加1,再運算

                    a++; 先運算,再加1

4.sizeof運算子: 用來計算變數,常量,資料型別所佔用的儲存空間的位元組數

1.sizeof(常量) sizeof常量

2.sizeof(變數) sizeof變數

3.sizeof(資料型別)

5.逗號運算子(優先順序最低)

1.運算順序: 從左到右

2.逗號表示式的運算結果為最後一個表示式的值

6.關係運算符(比較運算子)

                    == != > < >= <=

算術運算子 > 關係運算符優先順序 > 賦值運算子

7.邏輯運算子(優先順序高的優先結合)

                    && || !

8.三目運算子

條件表示式 ? 結果1 : 結果2

優先順序: 一般優先順序越高,越先進行運算

結合方向: 當優先順序相同的時候,計算方向(從左往右,從右往左)

四、流程控制

控制程式的執行流程

1.順序結構: 按照從上往下的順序執行

2.分支結構: 分支結構相當於岔路口,當條件滿足的時候就執行某段程式碼

if語句:

1.if語句必須以if開頭

2.if可以有多個elseif

3.if語句只有一個else

4.if語句中最多隻有一個程式碼塊會被執行

5.如果有else那麼必然有一個程式碼塊會被執行

switch語句: 當變數與某個常量相等的時候,就執行這個常量所對應的程式碼塊中的語句

格式

switch(變數){

case常量:

                            ...

break;

case常量:

                            ...

break;

default:

                            ...

break;

                        }

注意點

1.僅僅支援整形數(int,char,enum)

2.case後面只能是常量常量表達式

3.case後面的常量值不能相同

4.結束條件:

遇到breal;

執行到switch中的"}"

3.迴圈結構: 當條件滿足就會一直迴圈執行迴圈體中的程式碼,直到條件不再滿足

1.while語句: 當條件滿足的時候就指向while後面大括號中的語句

2.dowhile語句: 迴圈體中的程式碼至少執行一次

3.for語句;

for(初始化表示式;條件表示式;迴圈後操作表示式){

語句;

                                ...

                    }

break;  

1.用在switch語句中用來結束switch語句

2.用在迴圈結構中,用來結束當前的迴圈語句

continue;

1.只能用再迴圈結構中,跳過本次迴圈體中continue後面的語句,進行下一個條件判斷

五、函式

完成特定功能的程式碼段

1.格式:

返回值型別函式名稱(形參列表){

語句:

                ...

            }

2.函式宣告: 告訴編譯器該函式已經存在了

函式的宣告可以有多個,但函式的定義只能由一個

3.函式引數:

1.基本資料型別作為函式引數傳遞是值傳遞

2.陣列作為函式引數傳遞是地址傳遞

3.指標作為函式引數傳遞是地址傳遞

4.結構體作為函式引數傳遞和基本資料型別一致

4.函式返回值: 函式完成功能後要返回給主調函式中的資料

1.返回值的型別必須與返回的值得型別一致

2.一個函式只能有一個返回值

5.return作用

1.返回值給主調函式

2.結束函式

六、預處理指令: 在編譯之前需要進行解析處理的指令

1.巨集定義: #define 巨集名

1.不帶引數的巨集定義: 在編譯之前,使用巨集名後面的值,替換程式碼中所有出現巨集名標識的地方

2.帶引數的巨集定義: 把引數代入巨集名後面的表示式中,然後替換巨集呼叫的地方

2.條件編譯: 在編譯的時候,當條件滿足的時候就編譯某段程式碼

            #if 開頭   #elif    #else     #endif 結尾

            #ifdef    #endif

            #ifndef   #endif

3.檔案包含:

            #include 拷貝所包含的檔案內容到#include指令所在的位置

            include <>  包含系統的標頭檔案

            include ""包含自己寫的檔案