C 函式引數和返回值

2021-07-26 16:07:57 字數 1586 閱讀 2795

在呼叫函式時,大多數情況下,函式是帶引數的。主調函式和被呼叫函式之間有資料傳遞關係。前面已提到:在定義函式時函式名後面括號中的變數名稱為形式引數(formal parameter,簡稱形參),在主調函式中呼叫乙個函式時,函式名後面括號中的引數(可以是乙個表示式)稱為實際引數(actual parameter,簡稱實參)。

【例4.2】呼叫函式時的資料傳遞。

複製純文字新視窗

#include

using namespace std;

int max(int x,int y) //定義有參函式max

int main( )

#include using namespace std;

int max(int x,int y) //定義有參函式max

int main( )

{ int a,b,c;

cout<<"please enter two integer numbers:";

cin>>a>>b;

c=max(a,b);//呼叫max函式,給定實參為a,b。函式值賦給c

cout<<"max="《運**況如下:

please enter two integer numbers:2 3↙

max=3

有關形參與實參的說明:

1) 在定義函式時指定的形參,在未出現函式呼叫時,它們並不佔記憶體中的儲存單元,因此稱它們是形式引數或虛擬引數,表示它們並不是實際存在的資料,只有在發生函式呼叫時,函式max中的形參才被分配記憶體單元,以便接收從實參傳來的資料。在呼叫結束後,形參所佔的記憶體單元也被釋放。

2) 實參可以是常量、變數或表示式,如max(3, a+b);但要求a和b有確定的值。以便在呼叫函式時將實參的值賦給形參。

3) 在定義函式時,必須在函式首部指定形參的型別(見例4.2程式第3行)。

4) 實參與形參的型別應相同或賦值相容。例4.2中實參和形參都是整型,這是合法的、正確的。如果實參為整型而形參為實型,或者相反,則按不同型別數值的賦值規則進行轉換。例如實參a的值為3.5,而形參x為整型,則將3.5轉換成整數3,然後送到形參b。字元型與整型可以互相通用。

5) 實參變數對形參變數的資料傳遞是「值傳遞」,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在呼叫函式時,編譯系統臨時給形參分配儲存單元。

請注意:實參單元與形參單元是不同的單元。圖4.3表示將實參a和b的值2和3傳遞給對應的形參x和y。

呼叫結束後,形參單元被釋放,實參單元仍保留並維持原值。因此,在執行乙個被呼叫函式時,形參的值如果發生改變,並不會改變主調函式中實參的值。例如,若在執行max函式過程中形參x和y的值變為10和15,呼叫結束後,實參a和b仍為2和3,見圖4.4。

1) 函式的返回值是通過函式中的return語句獲得的。return語句將被呼叫函式中的乙個確定值帶回主調函式中去。

return語句後面的括號可以要,也可以不要。return後面的值可以是乙個表示式。

2) 函式值的型別。既然函式有返回值,這個值當然應屬於某乙個確定的型別,應當在定義函式時指定函式值的型別。

3) 如果函式值的型別和return語句中表示式的值不一致,則以函式型別為準,即函式型別決定返回值的型別。對數值型資料,可以自動進行型別轉換。

函式引數和函式返回值

思考乙個問題,如下 現在需要定義乙個函式,這個函式能夠完成2個數的加法運算,並且把結果列印出來,該怎樣設計?下面的 可以嗎?有什麼缺陷嗎?def add2num a 11 b 22 c a b print c為了讓乙個函式更通用,即想讓它計算哪兩個數的和,就讓它計算哪兩個數的和,在定義函式的時候可以...

函式返回值和引數高階

函式需要返回多個值時可以使用元組,return 後面返回的如果是元組,可以省略 在接收返回的元組時,變數個數需要和函式返回的元組中的元素個數一致,兩邊的括號都可以省略 交換數字的 python 專有方法,利用元組,直接交換 在函式內部使用賦值語句,不會對傳遞的實參產生影響,但如果使用在函式內部使用方...

引數和返回值

基本資料型別 這裡所說的形式引數對基本資料型別不做研究 引用資料型別 引數是具體類時 建立引用資料型別 使用匿名類 new 類名 使用匿名內部類的方式 父類名或者父類介面 物件名 new 父類名或者父類介面 引數是抽象類時 可以使用抽象類多型 建立抽象類的子類 使用匿名內部類的方式 父類名或者父類介...