函式名做實參傳遞及程式例項

2021-08-09 00:09:18 字數 1434 閱讀 3420

在c語言中常出現函式呼叫,而執行函式時會出現引數的傳遞,其中引數傳遞需要形參與實參的配合。形式引數,是在定義函式名函式體時所使用的引數,其作用是用於接收外部主調函式傳入的引數。即函式括號內的所有引數均稱為形參。與之相反的,實參是指主調函式中待發送給被調函式的引數。

其中引數傳遞又存在兩種機制:

一為傳值呼叫機制,即只能存在單方向的實參的值傳遞給形參,而不能把形參的值反向傳遞給實參。在函式呼叫過程中,形參的變化不會影響實參,形參在函式開始時分配空間,結束時自動釋放。

二為引用呼叫機制,即實參將位址傳遞給形參而不是傳遞值,所以形參在函式內不申請空間,其在函式內的任何操作都是透過位址對實參進行操作,對實參產生影響。

同一函式的形參和實參在數量、型別、順序上必須一直,否則會出現型別不匹配的錯誤。

函式做實參使用:

實參的傳遞範圍相當廣泛,包括常量、變數、表示式、函式等,在傳遞時必須有確定的值。常量、變數傳遞都相當常見,而不常見的是函式做實參。

函式做引數傳遞與變數由引用呼叫機制傳遞類似,其本質相同,不同之處在於其寫法。

type(*name)(argument_list);表示返回值是type,引數列表為argument_list的函式指標name。

函式做實參,適用於函式根據不同情況呼叫不同函式進行同一特定功能的情況。

程式例項:

示例1:

#include

#definestatus int

#defineok 1

usingnamespace std;

voidprintone(){

cout<<1cout<<2printxx();

voidselect(int ch){

if (ch==1) print(printone);       //函式名作實參傳遞函式位址

else print(printtwo);

intmain()

int ch=0;cin>>ch;

select(ch);

輸入:1

輸出:1          //函式print()呼叫printone()

輸入:2

輸出:2          //函式print()呼叫printtwo()

示例2:

#include

usingnamespace std;

voidprinttwo(){

cout<<2cout<<1printxx();

voi***rint(int n){

int cnt=0;

for (int i=1;i<=n;i++){

cnt+=i;

coutelse print(printtwo);

intmain()

int n=0;cin>>n;

pprint(n);

輸入:3

輸出:62

輸入:2

輸出:31

Python 函式傳遞任意數量的實參

案例 toppings 形參名中的星號讓python建立了乙個空元組,並將收到的所有值都封裝到這個元組中 defmake pizza toppings 列印顧客點的所有配料 print toppings make pizza pepperoni make pizza mushrooms green ...

將函式名 位址 作為引數傳遞

include int add int a,int b int aaa int a,int b,int p int,int 注意定義的函式指標 int main int a 1,b 2 printf d aaa a,b,add 將函式名 函式位址 作為引數 return 0 給上面乙個程式,其中最主...

函式中實參到形參的傳遞

引數的傳遞就是用實參初始化對應的形參。非引用形參 基本的情況 複製實參的值。函式並沒有訪問呼叫函式所傳遞的實參本身,所以不會改變實參的值。void swap int x,int y int main 指標形參 此時將複製實參的指標 形參的改變不會引起實參的改變,但是形參指向的內容可以發生變化。voi...