c語言總結

一、常量與變量

(1)常量:

a. 數值常量(整型常量、實型常量、字符常量);
b. const 聲明的類型;
c. define 宏定義;
d. enum 枚舉類型;

(2)變量:

在程序運行期間,隨時可能產生一些臨時數據,應用程序會將這些數據保存在一些內存單元中,每個內存單元都用一個標識符來標識。這些內存單元我們稱之爲變量,定義的標識符就是變量名,內存單元中存儲的數據就是變量的值。

(3)數據類型:

int 4字節 有符號時取值 -21億 -> +21億
無符號時取值 0 -> 42億9千萬

short 2字節

long 在32位機器下,4字節
在64位機器下,8字節

char 1字節 有符號時 -128 -> +127
無符號時 0 -> 255

long long 一般用不到

float 4字節 用IEEE標準制定

double 8字節 用IEEE標準制定(浮點數時推薦用這個)

二、循環結構

(1)for循環(一般用於循環條件已知的條件下)

for (表達式1; 表達式2; 表達式3){

語句;
}

(2)while循環(條件循環時候使用)

while(條件){

<語句體>;

}

(3)do while循環(保證循環體先執行一次,根據條件來判斷是否執行下一條)

do{

<語句體>

}while(循環條件);

(4)goto循環(不建議使用)

三、選擇結構

(1)

if(判斷條件){
語句塊1
}
else{
語句塊2
}

(2)

switch(表達式){
case 整型數值1: 語句 1;
case 整型數值2: 語句 2;

case 整型數值n: 語句 n;
default: 語句 n+1;
}
ps:不建議使用

四、數組

(1)一維數組

定義:類型說明符 數組名[常量表達式];
int a[10];(若不初始化,則要說明其大小,裏面是常量(const不行))
注意:1.數組中的下標是從 0 開始的(而不是 1);
2.不完全初始化時,沒有被初始化的元素自動爲 0;
3.完全不初始化,即只定義“int a[5];”那麼各個元素的值就不是0了,所有元素都是垃圾值;
4.數組下標訪問越界,本質是訪問非法內存(未定義行爲);

(2)二維數組

本質:就是一個一維數組,只不過裏面的元素是個一維數組。
定義:類型說明符 數組名[length1][length2];
length1可以看做是行數,length可以看做是列數。

(3)多維數組

本質:仍是一維數組,只不過嵌套的一位數組。
不建議使用。

五、運算符

(1)算術操作符

算術標識符都有哪些:+、-、*、/、%。

(2)移位操作符。

左移<<(相當於*2)
右移>>(相當於/2)

注意的是移植不能是負值,或者值太大。

(3)位操作符

位操作符包括:&(按位與)、|(按位或)、^(按位異或)、~(取反)。

(4)賦值操作符

賦值操作符:+=、-=、*=、/=、%=、 &=、| =、^=、<<=、>>=、

(5)單目操作符

單目操作符有:!(邏輯反操作、非)、&(取地址符)、sizeof()(求長度)、~(按位取反)、++、––、*、(類型)等。
i++ 相當於{ temp=num;
num += num;
return temp;
}
++I 相當於{
num+=num;
return num;

}

(6)關係操作符

關係操作符:<、>、<=、>=

(7)邏輯操作符

邏輯操作符:&&、||

(8)條件運算符

exp1 ? exp2 : exp3

六、函數

(1)定義:

函數就是一段封裝好的,可以重複使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重複的代碼。函數可以提前保存起來,並給它起一個獨一無二的名字,只要知道它的名字就能使用這段代碼。函數還可以接收數據,並根據數據的不同做出不同的操作,最後再把處理結果反饋給我們。

(2)形參和實參

形參(形式參數):在函數定義中出現的參數可以看做是一個佔位符,它沒有數據,只能等到函數被調用時接收傳遞進來的數據,所以稱爲形式參數,簡稱形參。
實參(實際參數):函數被調用時給出的參數包含了實實在在的數據,會被函數內部的代碼使用,所以稱爲實際參數,簡稱實參。
形參和實參的功能是傳遞數據,發生函數調用時,實參的值會傳遞給形參。

(3)遞歸函數

一個函數在它的函數體內調用它自身稱爲遞歸調用,這種函數稱爲遞歸函數。執行遞歸函數將反覆調用其自身,每調用一次就進入新的一層,當最內層的函數執行完畢後,再一層一層地由裏到外退出。如菲波那切數列

(4)函數變量的作用域

變量的作用域由變量的定義位置決定,在不同位置定義的變量,它的作用域是不一樣的。分爲局部變量和全局變量。
局部變量定義在函數內部的變量,它的作用域僅限於函數內部, 離開該函數後就是無效的,再使用就會報錯。
全局變量定義在所有函數外部定義的變量,它的作用域默認是整個程序,也就是所有的源文件,包括 .c 和 .h 文件。
開發項目,儘量不要使用全局變量,代碼重構不方便。

七、結構體

(1)定義:

C語言結構體(Struct)從本質上講是一種自定義的數據類型,只不過這種數據類型比較複雜,是由 int、char、float 等基本類型組成的。你可以認爲結構體是一種聚合類型。
struct 結構體名{
結構體所包含的變量或數組
};

(2)結構體成員的訪問

a.使用“.”來訪問
b.使用“->”來訪問

八、指針

(1)定義:

計算機中所有的數據都必須放在內存中,不同類型的數據佔用的字節數不一樣,例如 int 佔用 4 個字節,char 佔用 1 個字節。爲了正確地訪問這些數據,必須爲每個字節都編上號碼,就像門牌號、身份證號一樣,每個字節的編號是唯一的,根據編號可以準確地找到某個字節。

(2)指針變量的運算

指針+,-常數的話,就是加或者減一個指針類型的長度;

(3)指針數組和數組指針

指針數組: 是指一個數組裏面裝着指針,也即指針數組是一個數組;
定義形式:int *a[10];
數組指針:是指一個指向數組的指針,它其實還是一個指針,只不過是指向數組而已;
定義形式:int (p)[10]; 其中,由於[]的優先級高於,所以必須添加(*p).

(4)二級指針

如果一個指針指向的是另外一個指針,我們就稱它爲二級指針,或者指向指針的指針。
形式:int a =100;
int *p1 = &a;
int **p2 = &p1;

(5)空指針null和void指針

空指針:當把一個空指針常量轉換爲指針類型時,所得到的結果就是空指針。空指針常量是一個值爲 0 的整數常量表達式,或者是一個 void* 類型的表達式。在頭文件 stdlib.h、stdio.h 以及其他頭文件中,宏 NULL 被定義爲空指針常量。
void指針:指向 void 的指針,或者簡稱爲 void 指針(void pointer),是類型爲 void* 的指針。因爲沒有對象類型是 void,所以 void* 被稱爲萬能指針類型。換句話說,void 指針可以代表任何對象的地址,但不代表該對象的類型。若想獲取內存中的對象,必須先把 void 指針轉換爲合適的對象指針。

發佈了42 篇原創文章 · 獲贊 12 · 訪問量 3357
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章