C語言學習(四)函式

2021-08-21 20:09:20 字數 1468 閱讀 5491

一、函式概念及基本特徵

也就是一段可以重複使用的**。c語言本身自帶許多庫函式,當然我們也可以自己編輯函式。

函式的乙個明顯特徵就是使用時帶括號( ),必要的話,括號中還要包含資料或變數,稱為引數(parameter)。引數是函式需要處理的資料,例如:

strlen(str1)用來計算字串的長度,str1就是引數。

puts("c語言中文網")用來輸出字串,"c語言中文網"就是引數。

還有一點就是函式一定要有返回值,也就是函式的執行結果。

二、函式的格式

那麼我們自己定義的函式是什麼樣的呢?定義函式的格式為:

返回值型別 函式名()

函式體返回值可以是任意的資料型別,例如int、float等。

函式名是識別符號的一種,命名規則和識別符號一樣,以字母或下劃線開始,函式後面的括號()不能少。

函式體是函式需要執行的**,即使只有乙個語句也要{}包圍。

函式定義時給出的引數稱為形式引數,簡稱形參;函式呼叫時給出的引數(傳遞的資料)稱為實際引數,簡稱實參。函式呼叫時,將實參的值傳遞給形參,相當於一次賦值操作。 形參變數只有在函式被呼叫時才會分配記憶體,呼叫結束後,立刻釋放記憶體,所以形參變數只有在函式內部有效,不能在函式外部使用。

三、遞迴函式

乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫,這種函式稱為遞迴函式。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。

看乙個簡單的例子:求斐波那契數列(第一項為1,第二項為2,後一項等於前2項之和)的第n個數的值。

**如下:

1 #include 2 

3 int func(int n);

4 5 int main()

6 12

13 int func(int n)

14

在定義了func()函式之後,在函式體中我們再次呼叫func()函式,反覆呼叫自身也就稱為遞迴。

四、全域性變數和區域性變數

定義在函式內部的變數稱為區域性變數(local variable),它的作用域僅限於函式內部, 離開該函式後就是無效的,再使用就會報錯。幾點說明:

1) 在 main 函式中定義的變數也是區域性變數,只能在 main 函式中使用;同時,main 函式中也不能使用其它函式中定義的變數。

2) 形參變數、在函式體內定義的變數都是區域性變數。實參給形參傳值的過程也就是給區域性變數賦值的過程。

3) 可以在不同的函式中使用相同的變數名,它們表示不同的資料,分配不同的記憶體,互不干擾,也不會發生混淆。

4) 在語句塊中也可定義變數,它的作用域只限於當前語句塊。

全域性變數

在所有函式外部定義的變數稱為全域性變數(global variable),它的作用域預設是整個程式,也就是所有的原始檔,包括 .c 和 .h 檔案。

注意:1、在區域性變數作用的範圍內,區域性變數有效,全域性變數被「遮蔽」不起作用。

2、c語言中的函式只能有乙個返回值,以此想要得到函式返回的多個值,可以使用全域性變數。

C語言學習 函式

先定義,後使用。型別名 函式名 或者 型別名 函式名 void 1 型別名這裡表示的是函式的返回值型別,也可以用void,表示不返回函式值 2 函式體包含宣告部分和語句部分 型別名 函式名 形式引數列表 1 形式引數列表,比如 int x,int y 型別名 函式名 比如 void dummy 單獨...

c語言學習筆記四

結構體 復合型別和結構體 復合型別 示例 struct test sturuct 如果用這種復合型別來定義變數 示例 struct test stuructz1,z2 定義訪問結構體 include int main void z int x 3 z.x x z.y 4 printf z f f z...

c語言學習筆記四

結構體 復合型別和結構體 復合型別 示例 struct test sturuct 如果用這種復合型別來定義變數 示例 struct test stuructz1,z2 定義訪問結構體 include int main void z int x 3 z.x x z.y 4 printf z f f z...