1. 程式人生 > >swap函式之函式傳值問題

swap函式之函式傳值問題

在前面的部落格中,我有一篇“藉助字元大小轉換balabala”的博文。那篇文章我寫得很認真。但是後來,我和一個學長交流問題的時候,我發現自己的子函式寫的不符合規則。
所以,我又閉門造車了。。
時隔兩天,我來糾正自己的錯誤啦。
首先,函式呼叫時,涉及到值傳遞。實參經過子函式,計算出結果,並返回函式值給主函式。
函式傳值:值傳遞和引用傳遞。
本質區別:值傳遞是將實參的副本傳給函式,進行計算。
引用傳遞是將實參的地址傳給函式進行計算。
直接區別:值傳遞不改變實參的值,而引用傳遞改變實參的值。
例如:
void swap(int a,int b); 值傳遞 主函式傳進來的a,b即使經過操作,仍不改變a和b的值。
void swap(int &a,int &b);引用傳值 主函式傳來的a,b的地址,通過運算改變了啊a,b地址裡面的內容,也就是可以改變ab的值。
還有就是想記錄一下新的發現:
system(" title 氣泡排序程式 c++"); // 設定cmd視窗的標題
system(“mode con cols=40 lines=35”) ; //視窗寬度高度
system(“time /T”);
system(“date /T”);
system(“color 70”);

//氣泡排序
#include<iostream>
using namespace std;
void swap(int a, int b) {                //值傳遞
	int temp;
	temp = a;
	a = b;
	b = temp;
}
void swap(int *a, int *b) {         //引用傳值
	int  temp = *a;
	*a = *b;
	*b = temp;
}
int main() {
	system(" title 氣泡排序程式 c++"); //設定cmd視窗的標題
	system("mode con cols=40 lines=35");//視窗寬度高度
	system("time /T");
	system("date /T");
	system("color 70");
	int a, b;
	cin >> a >> b;
	cout << a << " " << b << endl;
	swap(a,b);
	cout << a <<"  "<< b << endl;
	swap(&a,&b);
	cout << a << "  " << b << endl;
	system("pause");
	return 0;
}

程式結果如圖所示:(注:為節省空間,沒有體現對命令列視窗大小的控制)
程式結果