黑馬程序員——C語言函數部分

函數部分

1、函數是程序的基本組成單位,其中主函數在每一個程序有且只有一個,並且程序必須從主函數開始執行。

                   有參函數

          參數

                   無參函數

2、函數              有返回值函數

          返回值

                     無返回值函數

3、函數的定義

函數返回值類型   函數名(類型 形參1,類型 形參2)  ——>首部定義

{

   聲明部分;              ——>函數體

執行部分;

}

4、若省略函數返回值類型,則默認爲整型

5、若函數有返回值,則必須通過return返回,並且return語句一旦執行,其後面語句不再執行

6、return的格式

(1)return  表達式;

(2)return  (表達式);

7、若函數的返回類型與return的返回類型不一致,則以定義時爲標準

   Eg:(1int  fun()

{

float  a = 2.6 

return  a

}

a = 2

2float fun()

{

int  a = 7 

return  a

}

a = 7.0

8、若函數無返回值,則將其類型定義爲空類型,即void。並且函數體中不再出現return語句

Egvoid fun()

{

int  a = 2

a = a+1

return  a;  //此處錯誤

}

9、函數的調用

函數名 (實參1,實參2

10、常見的函數調用

 (1)通過語句調用:fun 

 (2)通過表達式調用:sum = fun , y

 (3)通過參數調用:funfun mn))

 (4)通過遞歸調用

11、調用執行流程

在程序中,看到函數的調用語句,則轉去執行被調用的函數,若有參數,應進行參數間傳遞,即把實參的值傳遞給對應的形參,函數執行完畢,返回函數調用處

12、調用原則

               調用

(1)主函數             子函數     (主能調用子,子不能調用主)

 

主函數由系統提供,只能由系統調用

               調用

2)子函數            子函數       (子函數間可相互調用)

13、函數可以嵌套調用,但不能嵌套定義

14、若函數的定義出現在函數調用之後,則在調用前加上函數的聲明語句

聲明語句 首部定義+分號

在單向值傳遞中,形參的改變對實參沒有影響

 

遞歸調用:函數自身調用自身叫做函數的遞歸調用

(1)形式

    直接遞歸:fun ——> fun

間接遞歸: fun ——> fun c ——> fun

(2)步驟

遞:遞推——>向外展開

歸:迴歸——>向內返回

 

變量的作用域和存儲域

變量的存儲域

(1)靜態變量:static   egstatic  int a

(2)動態變量:auto    egauto  int a

注:定義動態變量時,auto可以省略不寫

靜態與動態的區別:

Egint a;                    static int a

Printf“%d\n”,a;         Printf“%d\n”,a;          

輸出隨機值                輸出0

   注:動態變量未賦初值,默認爲隨機值

靜態變量未賦初值,默認爲0

在調用函數時,動態變量的初始化每次都要執行,而靜態變量的初始化只在第一次執行,以後不再執行

變量的作用域

1)全局變量:在函數之外定義的變量,他的有效範圍從定義的位置開始,到整個程序結束

2)局部變量

在函數體內部或複合語句體內定義的變量,他只在該函數或該複合體內有效

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章