C語言學習 函式

2021-08-06 06:52:54 字數 2605 閱讀 2162

先定義,後使用。

型別名 函式名()

或者 型別名 函式名(void)

(1)

型別名這裡表示的是函式的返回值型別,也可以用void,表示不返回函式值

(2)

函式體包含宣告部分和語句部分

型別名 函式名(形式引數列表)

(1)

形式引數列表,比如:int x,int y

型別名 函式名(){}

比如:

void dummy()

單獨使用,方法名既可以:

max(x,y);

或者 preson();

函式表示式

c=max(x,y);

這是帶有返回值的,一般來說,帶有返回值的都這樣用

函式引數

乙個函式有返回值,可以直接當做另乙個函式的引數使用

m= max(a,max(x,y));

在呼叫有參函式時候,呼叫函式和被呼叫函式之間存在資料傳遞關係。

定義乙個函式:

void put(int x)

在呼叫時候:

put(3);

這樣的3就是實際引數,就是實參

在呼叫函式過程中,系統會把實參的值傳遞給呼叫函式的形參。

實參:可以是常量、變數、表示式、但是要求必須有確定的值,在呼叫時候將值傳給形參

實參和形參的型別相同或賦值相容。

(1)

形參,在未出現函式呼叫時候,他們不佔據記憶體中的儲存單元。只有在發生函式呼叫時候,函式max的形參才會

被臨時分配記憶體單元

(2)

如果帶有返回值,那麼通過return返回到主函式,如果是空的函式,則不需要return。

(3)

呼叫結束,形參單元被釋放。但是,實參單元依舊保留並維持原值,沒有改變。

別呼叫的函式必須是已經定義的函式(是庫函式或使用者自定義的函式),如果使用的是庫函式,那麼在本檔案開頭

用#include指令呼叫才行。

乙個使用者自己定義的函式,而該函式的位置在呼叫它的函式(一般是主函式)的後面,在同一檔案中時候,應該在主函式

中對於被呼叫的函式做宣告。

宣告的作用是將函式名、函式引數、引數型別等資訊通知編譯系統。

宣告時候只需:

float add(float x, float y); 就可以對於add函式的宣告了。

但也可以:

float add(float ,float);

因為c語言中,只關心和檢查引數的個數和引數型別,不檢查引數名。

陣列元素可以當做函式的引數。

陣列也可以用陣列名當做函式引數。這種時候向形參傳遞的是陣列首元素的位址

float add(float array[10]){}

定義上述的方法

在使用時如下:

float soore [10];

add(soore);

就可以了

包含兩種,一種是在函式內部定義的,這種變數旨在本函式範圍內有效。還有一種是在復合語句內定義的,

這種變數只在符合語句中使用。

有的變數是在呼叫其所在函式時才臨時分配儲存單元,有些變數是在程式執行期間是都存在的。

可以分為:靜態儲存方式和動態儲存方式。

靜態儲存方式是指程式執行期間由系統分配固定的儲存空間方式

動態儲存方式:在程式執行期間需要進行動態的分配儲存空間的方式

可以分為程式區、靜態儲存區、動態儲存區、

(1)

資料分別存放在靜態儲存區、動態儲存區、

全域性變數全部存放在靜態儲存區中,在程式開始時候就給全域性變數分配儲存區,程式執行完之後才釋放。

動態儲存區中:

函式形式引數(在呼叫函式時給形參分配儲存空間)、

函式中定義的沒有statis宣告的變數、

函式呼叫時的現場保護和返回位址等

(2)

同乙個函式,如果呼叫了兩次,那麼分配的在空間中的位址也是步相同的

每乙個變數和函式 都有兩個屬性,資料型別和資料的儲存類別。

c的儲存類別包括:自動的(auto)、靜態的(statis)、暫存器的(register)、外部的(extern)

根據變數的儲存類別,可以知道變數的作用域和生存期。

這種預設的是在呼叫函式時候,自動分配儲存空間就是動態儲存區。不寫auto則隱含指定為「自動儲存類別」

int b =4;

等價於

auto int b =4;

statis 不僅僅可以定義在主函式外,還可以定義在函式內,但是,存在之後,在程式整個執行期間不會在釋放。

int f()

在檔案2 中

int main()

寫成這樣,enter(int str) 表示為函式原型。

函式原型可以把函式的作用域擴充套件到定義該函式的檔案之外。

C語言學習(四)函式

一 函式概念及基本特徵 也就是一段可以重複使用的 c語言本身自帶許多庫函式,當然我們也可以自己編輯函式。函式的乙個明顯特徵就是使用時帶括號 必要的話,括號中還要包含資料或變數,稱為引數 parameter 引數是函式需要處理的資料,例如 strlen str1 用來計算字串的長度,str1就是引數。...

c語言學習 子函式

0x01 子函式 實際引數 數值 形式引數 注意 例如 scanf 值參做變參 送的位址 區分 值傳遞 產地變參 子函式放在主函式前面 or 在主函式前加入函式宣告 intsq int int main intsq int y 函式呼叫 r intfun int a,int b 錯誤 無需int r...

C語言學習(三) 函式

c語言的設計思想 把函式用作構件塊。c標準庫的函式有 printf scanf getchar 等等。進一步的,可以建立自己的函式。自定義函式格式的如下 返回型別 函式名 形參 簡單的例子 include void jolly void deny void jolly void deny int m...