值傳遞 位址傳遞 引用傳遞

2021-10-10 08:52:53 字數 658 閱讀 5786

值傳遞使得實參與形參沒有聯絡,函式與函式之間沒有耦合性,在各自的函式裡修改值不會改變各自本身的值。

但這也是它的缺陷。

1.實參傳入被調函式無法交換數值。

2.當傳入值大於8位元組即需要進行整體拷貝,無論是開闢的空間還是資料的拷貝都相對較大(這也是設計陣列退化為指標的原因),而指標傳遞只有4個位元組

所以需要位址傳遞來進行傳參。

位址的傳遞,使得傳入的引數是位址,而*解引用去操作該位址的記憶體,使得在被調函式中也可以修改主調函式中的實參值(這也是其不好的一點,看你怎麼利用)。但其傳參後還需要進行判空,不然可能產生bug,所以引入了引用傳遞,位址傳遞相當於擴充了變數的作用域。

引用傳遞由於其特性,定義時必須初始化,所以不存在判空的情況。(當主調函式傳參時其才會定義),引用相當於擴充了變數的作用域。

//引用指標

#include

#include

using

namespace std;

namespace sqh

}int

main()

//int a=10,b=20;

//int *p=&a;

// int *&r=p;

//r=&b; //改變了r即改變了p

引用陣列

引用函式

c 值傳遞 位址傳遞 引用傳遞

一.函式引數傳遞方式之一 值傳遞 1 值傳遞的乙個錯誤認識 先看題一中exchg1函式的定義 void exchg1 int x,int y 定義中的x,y變數被稱為exchg1函式的形式引數 問 你認為這個函式是在做什麼呀?答 好像是對引數x,y的值對調吧?請往下看,我想利用這個函式來完成對a,b...

C 值傳遞 位址傳遞 引用傳遞

昨天遇到乙個問題 程式一 char str 256 char sp str visitdepart rs,rs.column,sp static void visitdepart result t rs,int num,char spx note 這個程式表面上看是沒有錯誤的,但是,我用它做了樹的深...

值傳遞 引用傳遞與位址傳遞對比

引用傳遞 形參與實參公用乙個記憶體單元,同時變化。值傳遞 形參是實參的轉殖體,形參在記憶體單元中發生變化不會影響到實參。形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的。記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數。實參可以是常量 ...