[cpp] /* * 程序的版權和版本聲明部分 * Copyright (c)2012, 煙台大學計算機學院學生 * All rightsreserved. * 文件名稱: x.cpp * 作者:徐本錫 * 完成日期: 2012年 12 月20 日 * 版本號: v1.0 * 輸入描述: * 問題描述:自定義函數 的實際參數 的交換 * 程序輸出: */ //我的代碼: #include <iostream> using namespace std; #include <iostream> using namespace std; void jiaohuan(int x, int y); int main(void) { int a,b; cin>>a>>b; if (a<b) jiaohuan(a, b); cout<<"a,b="<<a<<","<<b; return 0; } void jiaohuan(int x, int y) { int t; t=x; x=y; y=t; } 分析: 自定義函數明顯是為了實現兩個參數的交換,當a<b時調用函數,是為了先輸出兩個數中較大的值,而實踐是檢驗真理的唯一標准。由實踐知,並沒有實現兩個實際參數的交換。 由於實際參數和形式參數被分別分配空間儲存,所以實際參數賦值給形式參數,形式參數交換後,自定義函數結束,形式參數儲存空間釋放。而實際參數並未改變。 [cpp] /* * 程序的版權和版本聲明部分 * Copyright (c)2012, 煙台大學計算機學院學生 * All rightsreserved. * 文件名稱: x.cpp * 作者:徐本錫 * 完成日期: 2012年 12 月20 日 * 版本號: v1.0 * 輸入描述: * 問題描述:自定義函數 的實際參數 的交換 * 程序輸出: */ //我的代碼: #include <iostream> using namespace std; void jiaohuan(int *x, int *y); int main(void) { int a,b; cin>>a>>b; if (a<b) jiaohuan(&a, &b); cout<<"a,b="<<a<<","<<b; return 0; } void jiaohuan(int *x, int *y) { int t; t=*x; *x=*y; *y=t; } 分析: 上個程序實現了交換,因為指針作為實際參數和形式參數所指的是同一個內存區域,當形式參數所指的值改變時,實際參數所指的值會隨之變化。 [cpp] /* * 程序的版權和版本聲明部分 * Copyright (c)2012, 煙台大學計算機學院學生 * All rightsreserved. * 文件名稱: x.cpp * 作者:徐本錫 * 完成日期: 2012年 12 月20 日 * 版本號: v1.0 * 輸入描述: * 問題描述:自定義函數 的實際參數 的交換 * 程序輸出: */ //我的代碼: #include <iostream> using namespace std; void jiaohuan(int &x, int &y); int main(void) { int a,b; cin>>a>>b; if (a<b) jiaohuan(a, b); cout<<"a,b="<<a<<","<<b; return 0; } void jiaohuan(int &x, int &y) { int t; t=x; x=y; y=t; }