第二週專案1-C/C++語言中函式引數傳遞的三種方式
問題及程式碼:
/*
* Copyright (c) 2016,煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:Cpp1.cpp
* 作者:張相如
* 完成日期:2016年9月5日
* 版本號:v1.0
*
* 問題描述:函式引數傳遞的三種表示方式
* 輸入描述:輸入兩個整數
* 程式輸出:調換位置
*/
#include<iostream>
using namespace std;
void myswap(int x, int y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
cout<<"請輸入待交換的兩個整數:";
cin>>a>>b;
myswap(a,b);
cout<<"呼叫函式交換後的結果是:"<<a<<" "<<b<<endl;
return 0;
}
執行結果:
程式碼:
#include<iostream>
using namespace std;
void myswap(int *p1, int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b;
cout<<"請輸入待交換的兩個整數:";
cin>>a>>b;
myswap(&a,&b);
cout<<"呼叫函式交換後的結果是:"<<a<<" "<<b<<endl;
return 0;
}
執行結果:
程式碼:
#include<iostream>
using namespace std;
void myswap(int &x, int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
cout<<"請輸入待交換的兩個整數:";
cin>>a>>b;
myswap(a,b);
cout<<"呼叫函式交換後的結果是:"<<a<<" "<<b<<endl;
return 0;
}
執行結果:
知識點總結:
第一種傳值的方法在主函式中a於b分別賦值於x和y,資料的交換隻存在於函式中,對原值a,b沒有影響
第二種傳地址的方式中a的地址傳給p1,b的地址傳給p2,在函式中地址互換,導致原值a,b的值互換
第三種引用作形參的方式中a與x是同一個地址,b與y是同一個地址,函式過程中x與y的地址互換就相當於a和b的地址互換,所以a,b的值互換