示例程式均以交換兩個整數為例。
值傳遞
#include void swap(int x, int y);
void swap(int x, int y)
int main( int argc, char *ar** )
由於值傳遞是單向傳遞,傳遞過程中只是改變了形參的數值,並未改變實參的數值,因此並不會改變a和b原有的值。
指標傳遞
#include void swap(int *x, int *y);
void swap(int *x, int *y)
int main( int argc, char *ar** )
指標傳遞過程中,將a和b的位址分別傳遞給了x和y,在函式體內部改變了a、b所在位址的值,即交換了a、b的數值。
引用傳遞
#include void swap(int &x, int &y);
void swap(int &x, int &y)
int main( int argc, char *ar** )
引用傳遞中,在呼叫swap(a, b);時函式會用a、b分別代替x、y,即x、y分別引用了a、b變數,這樣函式體中實際參與運算的其實就是實參a、b本身,因此也能達到交換數值的目的。
注:嚴格來說,c語言中是沒有引用傳遞,這是c++中語言特性,因此在.c檔案中使用引用傳遞會導致程式編譯出錯。
函式引數傳遞的三種方式
問題及 1 檔名稱 my first blog.cpp 作 者 林志文 完成日期 2016年9月5日 版 本 號 v1.0 問題描述 交換兩個整型變數的swap函式的三個版本 輸入描述 兩個整數 程式輸出 交換後的兩個整數 includevoid myswap int p1,int p2 void ...
引數傳遞的三種方式
引數傳遞的三種方式 按值傳遞 include using namespace std void swap int a,int b int main 缺點 記憶體開銷很大。對於傳遞一般引數 如果傳遞的參數量過多,例如8000個引數,則需要在棧中複製8000個引數傳遞過去,棧只有2m的空間,這樣的話棧的...
C C 函式引數的三種傳遞方式
函式引數傳遞方式一 值傳遞 格式 void swap int a,int b void main 函式引數傳遞方式二 位址傳遞 格式 void swap int a,int b void main 函式引數傳遞方式三 引用傳遞 注意 引用傳遞在c中不可用,僅c 支援 格式 void swap int...