函數間參數傳遞的3種方式


1、值傳遞:將主調函數的實參值傳遞給被調函數的形參。形參單獨分配內存。
單向數據傳遞機制:只能將主調函數的實參的值傳遞給被調函數的形參,形參改變不影響實參的值。

#include<iostream>
using namespace std;
void swap (int a, int b) {//實現形參a、b的交換
    int c;
    c = a;
    a = b;
    b = c;
}
int main() {
    int x = 2, y = 3;
    swap(x, y);//實參x,y的值並沒有交換。值傳遞的單向數據傳遞機制
    cout << x<< " "<<y<< endl;//2 3
    return 0;    
}

2、引用傳遞:被調函數的形參(引用類型)引用主調函數的實參值。間接訪問。
雙向數據傳遞機制:引用&,指向同一內存,其一改變,兩者都改變。
函數中局部變量不能被其他函數直接訪問,但可以被間接訪問。

#include<iostream>
using namespace std;
void swap (int &a, int &b) {//引用變量a、b,等效int &a=x;int &b=y;
    int c;
    c = a;
    a = b;
    b = c;
}
int main() {
    int x = 2, y = 3;
    swap(x, y);//實參x,y的值被交換。a與x,b與y指向同一內存,其一改變,兩者都變
    cout << x<< ""<<y<< endl;//3和2
    return 0;    
}

3、指針傳遞:被調函數的形參(指針類型)接收主調函數實參的內存地址。也是一種間接訪問。

#include<iostream>
using namespace std;
void swap (int *a, int *b) {//引用變量a、b,等效int *a=&x;int *b=&y;
    int c;
    c = *a;
    *a = *b;
    *b = c;
}
int main() {
    int x = 2, y = 3;
    swap(&x, &y);//實參x,y的值被交換。實參地址傳遞給指針類型的形參
    cout << x<< ""<<y<< endl;//3和2
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM