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 ""包含自己寫的檔案