在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...