1. 程式人生 > >第二週專案1-C/C++語言中函式引數傳遞的三種方式

第二週專案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的值互換