c語言基礎知識

2021-09-27 10:39:00 字數 3268 閱讀 3178

介紹重點(簡單的進行總結哦)

1.陣列

2.常見關鍵字

3.define定義常量和巨集

4.指標

5.結構體

定義:c語言中,一組相同型別的元素的集合稱為陣列

1.陣列定義:

屬於聚合體,定義的同時要進行初始化

int arr=; //整形陣列,存放6個元素

2.陣列的數量(存放元素個數):

sizeof(陣列名)/sizeof(arr[0])

3.陣列的使用:

#include

#include

intmain()

;for

(i =

0; i <

4; i++

)//用迴圈列印陣列

printf

("\n");

system

("pause");

return0;

}

auto(宣告變數的生存週期)   break  case  char  

const(定義常量) continue default do double else

enum extern float for goto if int long register

return short signed sizeof static struct switch

typedef union unsigned void volatile while

常見兩種關鍵字

1.關鍵字typedef

typedef型別定義,也可以理解為型別重新命名

//對unsigned int  重新命名為 u_int 

typedef

unsigned

int u_int;

intmain()

2.關鍵字static

關鍵字static

static是用來修飾變數和函式的

1.用來修飾區域性變數----靜態區域性變數

2.用來修飾全域性變數----靜態全域性變數

3.用來修飾函式----靜態函式

①修飾區域性變數:

//沒有static時

void

test1()

intmain()

system

("pause");

return0;

}//列印結果為1 1 1 1 1 1 1 1 1 1

void

test2()

intmain()

system

("pause");

return0;

}//列印結果為1 2 3 4 5 6 7 8 9 10

結論:static修飾區域性變數改變了變數的生命週期,讓靜態區域性變數出了作用域依然存在,直到程式結束,生命週期結束。

②修飾全域性變數

全域性變數被static修飾,作用域被限制到當前的原始檔中,使得這個全域性變數只能在本原始檔中使用。

③修飾函式

函式被static修飾,使得函式只能在本原始檔中使用。

#define時預處理指令,在編譯預處理時進行簡單的替換,不作正

確性檢查,不管含義是否正確直接帶入

//#define定義識別符號常量

#define max 1000

//#define定義巨集

#define add(x,y) ((x)+(y))

intmain()

巨集定義是比較常用的預處理指令,即使用「識別符號」來表示「替換列表」中的內容。識別符號稱為巨集名,在預處理過程中,預處理器會把源程式中的所有巨集名,替換成巨集定義中替換列表中的內容

巨集定義時主要用於以下:

①簡單文字或者字串的替換

②巨集函式(定義其表示式時要注意在巨集定義上加上括號)

記憶體:電腦上特別重要的儲存器,計算機中所有的程式執行都是在記憶體中進行的。

為了有效地使用記憶體,就把記憶體劃分為乙個個小小的記憶體單元,每個記憶體單元的大小是1個位元組

為了能夠有效的訪問到記憶體的每個單元,就給單元進行了編號,這些編號就稱為記憶體單元的位址。

怎麼得到位址? &(取位址符)

int

main()

取出位址之後怎麼儲存位址呢?在這裡需要定義指標變數

int num =10;

int*p;

//整型指標變數

p =#

//指標變數用來存放位址

指標應用

int

main()

指標變數的大小

指標變數大小都是4個位元組(32位平台)64位平台是8個位元組

int

main()

和陣列一樣屬於聚合體,在定義的同時要進行初始化,只有一次機會

1.結構體的定義

//抽象的資料型別不能賦值

struct student

;

2.結構體初始化

struct student s =

;//訪問結構體成員

printf

("name=%s age=%d ***=%s id=%s\n"

, s.name, s.age, s.***, s.id)

;// .為結構體成員訪問操作符

struct student *ps =

&s;printf

("name=%s age=%d ***=%s id=%s\n"

, ps->name, ps->age, ps->***, ps->id)

;// ->為結構體成員訪問操作符

C語言基礎知識

1 的問題。int i 1 int j 2 int k i j printf d k 輸出k為3。編譯原理有關編譯器在詞法解析的時候,對於運算子,總是查詢最大的匹配也就是說,i j,編譯器在找到 的時候,它不立即理解為 而是繼續下乙個字元,下乙個字元仍然是 可以組成 再往下的話便是 不成立了。所以i...

C語言基礎知識

一 位元組對齊 位元組對齊的原因,是機器在訪問記憶體中儲存的資料的高效性。通常機器是機器位數為自然邊界來訪問記憶體的,如果乙個4位元組整形數,所在的記憶體不在虛擬記憶體的自然邊界。則cpu需要讀多於一次的資料,這樣就降低了效率。所以,簡單地說,就是保證cpu指令在訪問資料的時候,能一次讀取,而不需要...

C語言基礎知識

1.進製 1 基數 基數為n,代表n進製 2 位權 從個位開始,向左依次編號為0,1.x 分別代表n進 制的x次 3 八進位制以0開頭,十六進製制以0x開頭 4 x 進製轉 進製 按權求和 十進位制轉 x進製 連除倒取餘 2.基本資料型別 3.常量 程式執行期間值不能被改變的量 分為 整型常量,浮點...