傳值 傳引用摘錄

2021-06-21 16:50:43 字數 629 閱讀 3432

1)「傳值」需要物件的構造和析構,可能會很耗時。

2)「傳值」對於一般物件而言,傳遞的大小總是大於「傳引用」

3)對於小物件,例如int,「傳值」會比「傳引用」更高效。

其實函式的引數一般程式語言的編譯器都是放在 stack 裡的

傳值就是把值 push 進 stack, 傳引用則是把位址 push 入 比如

int a = 3;

fun(a);               // 把 a 的值放入堆

fun2(&a);             // 把 a 的位址放入堆

在不需要改変引數裡的值時, 用傳值, 要改変實引數裡的值時, 用傳引用, 另外如果要傳入的是一些比較大的結構資料, 為了效率, 就算不改変其值也會使用傳引用的, 因為不用把大量資料拷進堆裡

傳值時要為實參在棧上分配儲存空間,函式呼叫時對實參複製乙份放在這

裡。函式體中對形參的一切操作,是對實參在棧上的副本的操作,對原來

的實參沒有影響。

傳引用時只在棧上為實參分配乙個指標的儲存空間,函式呼叫時只把實參

的指標傳遞進來了(引用實際上是不易出錯的指標)。函式體中對形參的

一切操作,就是對實參的操作。

引用主要是解決大物件在傳遞時建構函式和析構函式的系統開銷

傳值 傳值引用

首先對傳值和傳引用要有個基本的概念 傳值 傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。傳引用 傳遞的是引用的副本,共用乙個記憶體,會影響到呼叫方。此時,形參和實參指向同乙個記憶體位址。對引用副本本身 物件位址 的修改,如設定為null,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...

傳值 傳引用 傳指標

收藏 相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資...

傳值 傳引用 傳指標

相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資料傳遞...