摘 要:函數(shù)調(diào)用方式是C++函數(shù)教學(xué)的重點(diǎn),教學(xué)內(nèi)容存在一定的難度。本文簡(jiǎn)述了三種C++函數(shù)調(diào)用方式的特點(diǎn),通過典型案例分析,引導(dǎo)學(xué)生掌握函數(shù)調(diào)用方式的運(yùn)用方法。
關(guān)鍵詞:C++;教學(xué);函數(shù);調(diào)用方式
一、引言
C++語言是較為復(fù)雜的一門面向?qū)ο蟪绦蛟O(shè)計(jì)語言,其課程教學(xué)的實(shí)施有一定難度。函數(shù)調(diào)用方式不僅直接影響函數(shù)之間信息傳遞的效率,而且影響了程序運(yùn)行的結(jié)果,所以在C++函數(shù)教學(xué)中占有重要的位置。C++函數(shù)調(diào)用在C語言的基礎(chǔ)上,除了保留傳統(tǒng)的傳值調(diào)用和傳址調(diào)用兩種方式之外,又增加了頗具特色的引用調(diào)用方式。在授課中抓住要點(diǎn),選取同一個(gè)案例,反復(fù)對(duì)比分析,取得了良好的教學(xué)效果。
二、傳值調(diào)用
傳值調(diào)用是各種程序語言普遍存在的函數(shù)調(diào)用方式,在函數(shù)調(diào)用時(shí)把實(shí)參的值從左至右,一一傳遞給各個(gè)形參。這種傳遞是單向的,形參的值發(fā)生變化對(duì)實(shí)參毫無影響。在案例選取時(shí),精選交換兩個(gè)整型變量的值這個(gè)程序。定義一個(gè)swap函數(shù)負(fù)責(zé)交換,形參設(shè)置為普通類型int。代碼如下:
#include<iostream.h>
int main()
{
void swap(int a,int b);//函數(shù)聲明
int a,b;
cout<<"請(qǐng)輸入兩個(gè)整數(shù):"<<endl;
cin>>a>>b;
swap(a,b);//函數(shù)調(diào)用
cout<<"a="<<a<<",b="<<b<<endl;
return(0);
}
void swap(int a,int b)//函數(shù)定義
{
int t;//定義中間變量
t=a;
a=b;
b=t;
}
從運(yùn)行結(jié)果可以發(fā)現(xiàn),調(diào)用swap函數(shù)之后,main函數(shù)中a、b兩個(gè)變量的值并沒有交換。由于參數(shù)傳遞是單向的,實(shí)參傳值給形參,但是形參卻無法影響實(shí)參,因此導(dǎo)致main函數(shù)中實(shí)參a、b的值沒有交換。
三、傳址調(diào)用
傳址調(diào)用方式在形式上與傳值調(diào)用方式的區(qū)別是,形參是指針變量,實(shí)參是變量的地址。傳址調(diào)用使得被調(diào)函數(shù)能夠修改主調(diào)函數(shù)中變量的值,具體步驟是:(1)把形參設(shè)置為指針變量,如果需要修改n個(gè)主調(diào)函數(shù)的變量,則設(shè)置n個(gè)相應(yīng)的指針形參。(2)在函數(shù)調(diào)用時(shí)把主調(diào)函數(shù)的變量地址作為實(shí)參傳遞給指針形參,使得指針形參分別指向主調(diào)函數(shù)中的這些變量。(3)利用間接訪問方式修改主調(diào)函數(shù)中相應(yīng)變量的值。
再次選取交換兩個(gè)整型變量的值這個(gè)案例,同樣定義一個(gè)swap函數(shù)負(fù)責(zé)交換,但是形參設(shè)置為指針類型int*。部分代碼如下:
#include<iostream.h>
int main()
{
………………..
swap(&a,&b); //傳址調(diào)用
cout<<"a="<<a<<",b="<<b<<endl;
}
void swap(int *p,int *q) //函數(shù)定義
{
int t;
? t=*p;
*p=*q;
*q=t;
}
運(yùn)行情況顯示變量a和b的值確實(shí)發(fā)生了交換。調(diào)用swap函數(shù)時(shí),把變量a和b的地址分別傳給了指針形參p和q,因此p指向了變量a,q指向了變量b。在swap函數(shù)中,通過指針p間接訪問a,通過指針q間接訪問b,從而完成了main函數(shù)中變量a和b的值交換。
四、引用調(diào)用
所謂引用調(diào)用,就是把引用作為函數(shù)的形參。函數(shù)調(diào)用時(shí)與傳值調(diào)用方式一樣,實(shí)參既可以是變量,也可以是變量的引用。仍然選取交換兩個(gè)整型變量的值這個(gè)案例,同樣定義一個(gè)swap函數(shù)負(fù)責(zé)交換,但是形參設(shè)置為引用類型int&。運(yùn)行情況顯示,main函數(shù)中變量a和b的值也發(fā)生了交換。部分代碼如下:
#include<iostream.h>
int main()
{
………………..
swap(a,b); //函數(shù)調(diào)用
cout<<"a="<<a<<",b="<<b<<endl;
}
void swap(int &a,int &b) //函數(shù)定義
{
int t; //定義中間變量
t=a;
………………..
}
五、結(jié)語
引用調(diào)用在形式上與傳值調(diào)用相似,但是實(shí)現(xiàn)了與傳址調(diào)用類似的功能。C++特有的引用調(diào)用方式使用簡(jiǎn)便,程序的可讀性好,還可以達(dá)到傳址調(diào)用的效果。在教學(xué)中應(yīng)該重點(diǎn)分析三種函數(shù)調(diào)用方式的特點(diǎn),突出引用調(diào)用的優(yōu)點(diǎn),并推薦學(xué)生在編程實(shí)踐中采用。
參考文獻(xiàn):
[1] 王曉東. C++程序設(shè)計(jì)簡(jiǎn)明教程(第二版)[M].北京:中國(guó)水利水電出版社, 2017.
[2] 鄭莉. C++語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社, 2001.
[3] 江義華. C/C++完美演繹[M].北京:中國(guó)水利水電出版社, 2001.