函數是對一些數據指令的封裝,用函數能夠減小重複的代碼量,提升代碼的質量。有利於代碼重用,提升開發效率,加強程序的可靠性,也便於分工合做和修改維護。舉一個例子吧,若是你是一名理髮店裏的洗頭員工,你給第一位客人洗頭的時候,要去放毛巾的地方拿毛巾,去放洗頭護髮素的地方拿洗頭護髮素,第二位客人來的時候,你重複上面的行爲,若是客人不少,難道要一趟一趟的跑嗎,這個時候,若是你把洗頭護髮素第一次拿過來了,就把它放在那裏等着下次再用,就能夠不用跑那麼多趟了。函數的功能與此類似,節省重複的步驟。ios
當有多個功能類似的函數都出如今一個main函數裏面被調用時,若是函數名各不相同,找到對應的要調用的那個函數相對比較難,須要一個一個的看函數內容。重載函數能夠解決這個問題。函數
/*這裏若是要對兩個數進行求和,在找函數時就顯得有點麻煩,尤爲是函數個數較多時*/ int add1(int x, int y) int add2(float x, float y) int add3(double x, double y)
#include<iostream> using namespace std; int add(int x, int y) { return( x + y); } float add(float x, float y) { return x + y; } double add(double x, double y) { return x + y; } int main() { int x, y; cin >> x >> y; float a,b; cin >> a >> b; double m, n; cin >> m >> n; cout<<"整型數的和爲"<<add(x, y)<<endl; cout<<"浮點數之和爲"<<add(m, n) << endl; cout<<"double型的和爲"<<add(a, b) << endl; return 0; }
值傳遞是指當發生函數調用時,給形參分配內存空間,並用實參來初始化形參,這個過程是參數值的單向傳遞過程,一旦形參得到了值便於實參脫離關係,此後不管形參發生什麼改變,實參不會受影響。spa
假設咱們要交換兩個數的值,應該怎麼作呢3d
#include<iostream> using namespace std; void swap_1(int x,int y) { int t; t=x; x=y; y=t; } int main() { int a,b; cin>>a>>b; cout<<"沒有交換時a,b爲 "<<a<<";"<<b<<endl; swap_1(a,b);//值不交換 cout<<"調用函數1後a,b爲 "<<a<<";"<<b<<endl; return 0; }
//結果展現 5 8 沒有交換時a,b爲 5;8 調用函數1後a,b爲 5;8
#include<iostream> using namespace std; void swap_2(int &x,int &y) { int t; t=x; x=y; y=t; } int main() { int a,b; cin>>a>>b; cout<<"沒有交換時a,b爲 "<<a<<";"<<b<<endl; swap_2(a,b);//值交換 cout<<"調用函數2後a,b爲 "<<a<<";"<<b<<endl; return 0; }
//結果展現 5 8 沒有交換時a,b爲 5;8 調用函數2後a,b爲 8;5
以經典的漢諾塔爲例,想要把最大的盤子放在最下面,首先要把上面的其他盤子放在B上去,而又要將B的最大的盤子移過去,就又要把B的其他盤子放在A上,以此類推code
#include<iostream> using namespace std; void move(char src,char dest) { cout<<src<<"-->"<<dest<<endl; } void hanoi(int n,char src,char medium,char dest) { if(n==1) move(src,dest); else { hanoi(n-1,src,dest,medium); move(src,dest); hanoi(n-1,medium,src,dest); } } int main() { int m; cout<<"輸入碟子數目"<<endl; cin>>m; cout<<"the steps to moving "<<m<<"diskes:"<<endl; hanoi(m,'A','B','C'); return 0; }
//結果展現 輸入碟子數目 3 the steps to moving 3diskes: A-->C A-->B C-->B A-->C B-->A B-->C A-->C