C語言基礎

2022-08-31 02:24:06 字數 1973 閱讀 2902

複習:

自定義函式:

1、函式宣告 告訴編譯器函式的格式,方便它檢查呼叫者的引數、返回值。

2、隱式宣告 當呼叫函式時如果沒有宣告和定義,編譯器會猜測函式的格式,函式的形參按照呼叫者的實參猜測,返回值預設int。

3、函式定義 函式的定義出現在呼叫之前可以省略宣告。

3、函式傳參

值傳遞:普通變數 函式之間不能共享同名變數(區域性)。

址傳遞:陣列的長度會丟失,需要額外增加乙個引數傳遞陣列的長度,同時該陣列會被兩個函式共享(呼叫者和被呼叫者);

返回值:return語句不是給把資料傳遞給呼叫者,而放在乙個他們都能訪問的位置,如果函式中沒有return語句,那麼該位置的值就是乙個隨機的垃圾值(上上次函式的返回值)。

程序映像:

程式:儲存在磁碟上的檔案(二進位制、指令碼)

程序:系統中正在執行的程式,程序映像指的是程序的記憶體分布。

text **段 二進位制指令 常量 唯讀,強制修改會產生段錯誤。

data 資料段 被初始化過的全域性變數、靜態變數。

bss 靜態資料段 未初始化過的全域性變數、靜態變數,該段內存在執行時會先清理為0(全域性變數、靜態變數預設為0)。

heap 堆 由於程式設計師手動管理,特點是夠大。

stack 棧 大小有限超過限制會產生段錯誤,由系統管理,會隨著函式的呼叫分配記憶體,函式執行結束釋放記憶體。

變數的分類:

儲存位置、生命週期、使用範圍

全域性變數:定義函式外

data或bss

從程式執行開始到程式執行結束

任何位置可以使用

區域性變數:定義在函式內

stack

從定義位置開始到函式執行結束

只能在函式內使用

塊變數:定義在if、for、while等語句塊內的

stack

從定義位置開始到函式執行結束

只能在語句塊內使用

全域性變數、區域性變數、塊變數可以重名,區域性變數會螢幕同名的全域性變數,塊變數會螢幕同名的全域性變數、區域性變數。

型別限定符:

auto 用於定義自動分配、釋放記憶體的變數,不加就代表加。

不能在全域性變數前使用,也不能static同時使用。

extern 用於宣告全域性變數

當a.c中定義乙個全域性變數,b.c中如果想使用就需要用extern宣告一下。

extern 宣告只能渡過編譯階段,如果鏈拉時找不到,依然會報錯。

static

限制作用域

全域性變數、函式

改儲存位置

區域性變數、塊變數 由 stack 改為 data或bss

延長生命週期

區域性變數、塊變數 不會被銷毀 它們的初始化語句只是第一次有效。

const

用於"保護"變數不被顯式修改。

初始化過和全域性變數和靜態變數被 const 修飾後儲存位置會變成text,就成為了真正的常量,再強行修改就會產生段錯誤。

volatile

如果變數沒有顯式的被修改,再使用變數時就會繼續使用上次從記憶體中讀取到的值,而不會重新讀取(編譯器的優化)。

有些變數可能會被隱式修改,要想隨時得到變數的最新值就需要用 volatile 修飾乙個。

在硬體程式設計、多執行緒程式設計時使用。

register

申請把變數的儲存位置由記憶體改為暫存器,這樣能提高變數的讀寫速度,從而提高程式執行速度。

由於暫存器數量不多,不是每次申請都能成功。

注意:這種變數不能被取位址。

typedef

型別重定義,當定義變數時,前面加上typedef,變數名就變成了這種型別。

常用的:size_t time_t uint8_t 都是使用typedef重新定義的。

注意:不是替換。

五子棋:

需要的資料:

1、定義棋盤陣列

2、定義變數用於記錄棋子位置

3、定義角色變數

業務邏輯:

是否需要對資料進行初始化

for(;;)

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...

c語言基礎

1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...

C語言基礎

找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...