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; }

