C語言基礎4 函式

2021-09-12 09:46:28 字數 2002 閱讀 2796

函式定義

注意:

1、包含的內容可以省略,資料型別說明省略,預設是int型別函式;引數省略表示該函式是無參函式,引數不省略表示該函式是有參函式;

2、函式名稱遵循識別符號命名規範;

3、自定義函式盡量放在main函式之前,如果要放在main函式後面的話,需要在main函式之前先宣告自定義函式,宣告格式為:[資料型別說明] 函式名稱([引數]);

函式的形參和實參具有以下特點:

形參只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只有在函式內部有效。函式呼叫結束返回主調函式後則不能再使用該形參變數。

實參可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

在引數傳遞時,實參和形參在數量上,型別上,順序上應嚴格一致,否則會發生型別不匹配」的錯誤。

遞迴函式特點:

每一級函式呼叫時都有自己的變數,但是函式**並不會得到複製,如計算5的階乘時每遞推一次變數都不同;

每次呼叫都會有一次返回,如計算5的階乘時每遞推一次都返回進行下一次;

遞迴函式中,位於遞迴呼叫前的語句和各級被呼叫函式具有相同的執行順序;

遞迴函式中,位於遞迴呼叫後的語句的執行順序和各個被呼叫函式的順序相反;

遞迴函式中必須有終止語句。

一句話總結遞迴:自我呼叫且有完成狀態。

c語言根據變數的生存週期來劃分,可以分為靜態儲存方式和動態儲存方式。

靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。靜態儲存區中存放了在整個程式執行過程中都存在的變數,如全域性變數。

動態儲存方式:是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存區中存放的變數是根據程式執行的需要而建立和釋放的,通常包括:函式形式引數;自動變數;函式呼叫時的現場保護和返回位址等。

c語言中儲存類別又分為四類:自動(auto)、靜態(static)、暫存器的(register)和外部的(extern)。

1、用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動儲存類別」,屬於動態儲存方式。

2、用static修飾的為靜態變數,如果定義在函式內部的,稱之為靜態區域性變數;如果定義在函式外部,稱之為靜態外部變數。

注意:靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,在程式整個執行期間都不釋放;靜態區域性變數在編譯時賦初值,即只賦初值一次;如果在定義區域性變數時不賦初值的話,則對靜態區域性變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)。

3、為了提高效率,c語言允許將區域性變數得值放在cpu中的暫存器中,這種變數叫「暫存器變數」,用關鍵字register作宣告。

注意:只有區域性自動變數和形式引數可以作為暫存器變數;乙個計算機系統中的暫存器數目有限,不能定義任意多個暫存器變數;區域性靜態變數不能定義為暫存器變數。

4、用extern宣告的的變數是外部變數,外部變數的意義是某函式可以呼叫在該函式之後定義的變數。

在c語言中不能被其他原始檔呼叫的函式稱謂內部函式 ,內部函式由static關鍵字來定義,因此又被稱謂靜態函式,形式為:

static [資料型別] 函式名([引數])

這裡的static是對函式的作用範圍的乙個限定,限定該函式只能在其所處的原始檔中使用,因此在不同檔案**現相同的函式名稱的內部函式是沒有問題的。

在c語言中能被其他原始檔呼叫的函式稱謂外部函式 ,外部函式由extern關鍵字來定義,形式為:

extern [資料型別] 函式名([引數])

c語言規定,在沒有指定函式的作用範圍時,系統會預設認為是外部函式,因此當需要定義外部函式時extern也可以省略。

C語言基礎4

基 礎 概 括 陣列 陣列 由同一種資料,型別組成。陣列中只能存放一種型別的資料。元素 陣列大括號裡的數字。陣列元素的個數只能是常量值。定義陣列 陣列的型別 陣列名 數值列印格式 printf 陣列名 d d n 陣列名 i 遍歷 按順序檢視陣列中每乙個元素。小語法 只要確定大括號中元素的個數,就能...

c語言基礎4

指標常量和指標變數的區別 常量只在宣告的時候賦值,變數可以在任何時候賦值,對於指標來說,就是常量指標指向的位址從宣告之後就再也改變不了。float零值 const float epsion 0.000001 if n epsion n epsion 在這之間的就是float的零值 函式和指標 在c語...

C語言基礎 4

一 控制語句 1 順序語句 2 分支語句 1 if else 語句 三種形式 簡答形式 if 表示式 語句 eg if a b printf a b n 階梯形式 if 表示式1 語句塊1 else if 表示式2 語句塊2 else 語句塊n eg 練習 輸出學生成績等級 注意 if中的表示式一般...