函式的三種值傳遞方式

2022-07-28 05:51:13 字數 1714 閱讀 5228

關於函式引數的傳遞方式

傳值引數:

實際引數的值被複製到由函式開闢的記憶體空間中,成為形參的初始值。完成引數值傳遞之後,函式體中的語句對形參的訪問、修改都是在這個標識物件上操作的,與實際引數無關。

例項:

#include#include

using

namespace

std;

void swap(int ,int

);int

main()

void swap(int a, int

b)

view code

輸出結果:

理解:輸入4,5,賦給a,b。呼叫函式swap,把a,b的值傳遞給函式中的形參,在swap函式中,輸出交換後的形參的值。然後再main函式中輸出a,b的值,發現a,b實際上並沒有交換值,這是因為swap函式只對形參進行操作。

指標引數:

指標傳遞本質上和值傳遞差不多,實際上是把實際的指標引數傳遞給函式中建立的形參指標。不同的地方在於,指標傳遞的情況時,可以通過再函式中通過形參指標的間址訪問對實際變數做出更改,這是值傳遞無法做到的。

引用引數:

與以上兩者不同的是函式呼叫時,形式引數不需要開闢新的儲存空間,形式引數名作為引用(別名)繫結與實際引數表示的物件上。執行函式體時,對形參的操作就是對實參物件操作。

**:

#include#include

using

namespace

std;

void swap(int &, int &);

intmain()

void swap(int &p, int &q) //

形式引數是整形引用

使用const引用引數:

#include#include

using

namespace

std;

void swap(const

int &,const

int &);

intmain()

void swap(const

int &a, const

int &b)

與上述類似,使用const關鍵字約束對指標變數所指向物件的訪問,這種指標稱為指向常量指標。

如:int a=2,b=3;

const int *p1=&a;       //宣告乙個指向常量的指標並給指標初始化

const int *p2;

p2=&b;      //可以通過,因為指向常量的指標只對指標所指向的物件進行約束,並不對指標本身進行約束,所以可以先宣告,後賦值

*p1=3;        //非法,無法通過p1間接對a進行修改

a=3;         //合法,a是int型變數,可以修改

三種函式的傳遞方式

檔名稱 作 者 張延飛 完成日期 2017年9月11日 版 本 號 v1.0 問題描述 兩種函式傳遞的方式 傳值和傳位址 輸入描述 兩個整數,代表交換前的值 程式輸出 兩個整數,代表交換後的值 include using namespace std void myswap intx,inty int...

函式引數傳遞的三種方式

問題及 1 檔名稱 my first blog.cpp 作 者 林志文 完成日期 2016年9月5日 版 本 號 v1.0 問題描述 交換兩個整型變數的swap函式的三個版本 輸入描述 兩個整數 程式輸出 交換後的兩個整數 includevoid myswap int p1,int p2 void ...

C C 函式引數的三種傳遞方式

函式引數傳遞方式一 值傳遞 格式 void swap int a,int b void main 函式引數傳遞方式二 位址傳遞 格式 void swap int a,int b void main 函式引數傳遞方式三 引用傳遞 注意 引用傳遞在c中不可用,僅c 支援 格式 void swap int...