swap函式之函式傳值問題
阿新 • • 發佈:2018-12-31
在前面的部落格中,我有一篇“藉助字元大小轉換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; }
程式結果如圖所示:(注:為節省空間,沒有體現對命令列視窗大小的控制)