C語言基礎 7 函式

2021-08-07 21:14:34 字數 1351 閱讀 6790

c語言裡可以採用分組的方式管理語句每個語句分組叫做乙個函式

多函式程式執行的模式

1.整個程式的執行時間被分成幾段,不同時間段被分配給不同的函式使用

2.所有時間段之間既不可以重疊也必須連續

3.如果函式a把一段時間分配給函式b使用則函式b在完成所有工作之後必須把後面的時間再還給函式a

如果函式a在工作過程中把一段時間分配給函式b使用則它們之間存在函式呼叫關係

在這個關係中函式a叫做呼叫函式,函式b叫做被呼叫函式

函式之間的呼叫關係只在一段時間範圍內有效,這段時間就是被呼叫函式工作的時間範圍

函式呼叫語句可以在兩個函式之間產生函式呼叫關係

不可以跨函式使用變數

不同函式裡的變數可以重名

如果函式多次執行則每次執行的時候它裡面的變數對應的儲存區都可能不同

宣告變數時可以使用volatile關鍵字,如果變數對應的儲存區被多個不同的程式共用就必須使用這個關鍵字宣告變數

函式呼叫過程中通常伴隨著兩個函式之間的資料傳遞

資料傳遞存在兩個完全相反的方向,既可以從呼叫函式向被呼叫函式傳遞資料也可以從被呼叫函式向呼叫函式傳遞資料

永遠使用被呼叫函式分配的儲存區記錄要傳遞的資料

從被呼叫函式只能向呼叫函式傳遞乙個資料,這個資料只能在被呼叫函式結束的時候才能傳遞,這個資料叫做被呼叫函式的返回值,這個返回值必須記錄在被呼叫函式分配的乙個儲存區里,應該把這個儲存區的型別名稱寫在被呼叫函式的名稱前面

return關鍵字可以把乙個數字作為返回值

放在專門的儲存區里

函式呼叫語句可以當作數字使用,這個數字就是函式的返回值

如果被呼叫函式沒有使用return關鍵字設定返回值則,呼叫函式得到的就是乙個隨機數

呼叫函式得到返回值以後或者立刻使用或者轉存到其他儲存區

如果函式沒有返回值就必須在函式名稱前寫void

如果函式名稱前什麼都沒有寫在c89規範裡表示函式提供乙個整數型別儲存區存放返回值,在c99規範裡不允許這樣

被呼叫函式不可以使用陣列記錄返回值

為了從呼叫函式向被呼叫函式傳遞資料就需要使用被呼叫函式提供的一組儲存區,這些儲存區的個數和型別任意

在函式名稱後面的小括號裡寫一組變數宣告語句,這些變數就用來代表用來傳遞資料的儲存區,這些變數叫做形式引數,小括號裡的所有內容叫做形式引數列表,每個形式引數的型別名稱都不可以省略,相鄰的形式引數宣告之間用逗號分開

在函式呼叫語句的小括號裡需要為每個形式引數提供乙個對應的數字,計算機這些數字記錄到對應的形式引數儲存區里

這些數字叫做實際引數,能當作數字使用的內容都可以作為實際引數使用

如果函式沒有形式引數就應該在函式名稱後面的小括號裡寫void

如果函式名稱後面的小括號裡是空的就表示函式可以提供任意多個任意型別的形式引數

C語言基礎 (7)函式

c語言裡可以採用分組方式管理語句,每個語句分組叫做乙個函式。1 整個程式的執行時間被分成幾段,不同時間段被分配給不同函式使用。2 所有時間段之間不能重疊,並且是連續的。3 如果函式a在工作過程中把一段分配給函式b使用則函式b完成工作後必須把後面的時間還給函式a。如果函式a在工作過程中把一段時間分配給...

C 語言基礎 7 inline內聯函式

函式呼叫是有時間和空間開銷的。程式在執行乙個函式之前需要做一些準備工作,要將實參 區域性變數 返回位址以及若干暫存器都壓入棧中,然後才能執行函式體中的 函式體中的 執行完畢後還要清理現場,將之前壓入棧中的資料都出棧,才能接著執行函式呼叫位置以後的 如果函式體 比較多,需要較長的執行時間,那麼函式呼叫...

C 語言基礎 7 inline內聯函式

函式呼叫是有時間和空間開銷的。程式在執行乙個函式之前需要做一些準備工作,要將實參 區域性變數 返回位址以及若干暫存器都壓入棧中,然後才能執行函式體中的 函式體中的 執行完畢後還要清理現場,將之前壓入棧中的資料都出棧,才能接著執行函式呼叫位置以後的 如果函式體 比較多,需要較長的執行時間,那麼函式呼叫...