我們都知道c++傳遞引數有三種形式,傳值,傳指標和傳引用,而一般c#中只有傳值和傳引用,但無論是在c#中還是c++引數傳遞實際上只有兩種:值傳遞和引用傳遞,值傳遞就是將物件拷貝乙份到棧上,引用傳遞則傳遞的就是物件本身。在弄清楚值傳遞和引用傳遞之前一定要弄清楚引用和指標的區別,指標的概念我想很容易理解,因為在c++中它是實實在在佔據記憶體的乙個東東,但是「引用」一詞通常容易讓初學者混淆,個人認為引用更多是語義上的東西,在c++中把引用就看成是變數本身,呼叫方法的時候無論傳遞的是值還是指標,其實傳遞的都是拷貝,而傳遞引用的時候即所謂的引用傳遞傳遞的就是實參本身。
#include "stdafx.h
"#include
using
namespace
std;
void func1(int
x)void func2(int *x)
void func3(int &x)
int _tmain(int argc, _tchar*argv)
而在c#中引用語義上更像是c++中的指標,傳遞引用實際上也是值傳遞,傳遞的是拷貝,而c#中實現引用傳遞需要關鍵字ref和out。
classprogram
static
void func1(int
x)
static
void func2(ref
intx)
static
void
func3(a a)
static
void func4(ref
a a)
}class
a
那麼到底是指傳遞還是引用傳遞呢?值傳遞的好處是傳遞時對傳人物件的修改實際上是對物件副本的修改,不會影響到原物件的狀態(因為傳遞的是指標或者c#中的引用而影響到原來所指的物件是另外一回事)。按引用傳遞不需要發生拷貝行為,因此速度更快,特別是大物件的時候,這種優勢很明顯,如果又不想原物件被修改在c++中採用const引用傳遞無疑是最好的方法。
C 中的值傳遞和引用傳遞
c 抽象程式設計 函式與庫 c 中的值傳遞和引用傳遞 c 抽象程式設計 介面 1 h檔案與.cpp檔案的建立 c 抽象程式設計 介面 2 介面的用途 c 抽象程式設計 介面 3 介面設計的重點 c 抽象程式設計 介面 4 隨機介面的設計 c 抽象程式設計 介面 5 隨機數演算法 c 抽象程式設計 介...
C 值傳遞和引用傳遞
概念 在定義函式時函式括號中的變數名成為形式引數,簡稱形參或虛擬引數 在主調函式中呼叫乙個函式時,該函式括號中的引數名稱為實際引數,簡稱實參,實參可以是常量 變數或表示式。注意 c語言中實參和形參之間的資料傳遞是單向的值傳遞。被呼叫函式的形參只有函式被呼叫時才會臨時分配儲存單元,一旦呼叫結束占用的記...
C 值傳遞 指標傳遞和引用傳遞(C )
一 基本介紹 1 值傳遞 形參是實參的副本 複製 拷貝 形參值的改變不會影響實參的值,這種方式用的最多。2 指標傳遞 形參是指標型別,形參作指標運算後指向的就是實參,所以會影響實參的值,這種方式用的也很多。引數。這種方式用的也蠻多的。引用只是乙個別名 二 示例 1 值傳遞 1 include voi...