一、函式未被呼叫前,函式的形參並不占有實際的記憶體空間,也沒有被賦值。只有在被呼叫的時候,才被賦值。函式引數傳遞指的就是形參和實參想結合的過程。
二、函式引數傳遞存在兩種形式:
1、值傳遞:
即函式在發生呼叫時,給形參分配記憶體空間,直接以實參的值初始化形參。函式被賦值後,實參和形參即沒有關係,形參的改變不影響到實參。
函式傳遞是實參的值,是單向傳遞過程。形參值的改變對實參不起作用。
2、引用傳遞:把引用作為形參,在函式呼叫時發生的引數傳遞,成為引用傳遞。
通過引用名與通過被引用的變數名訪問變數的效果是一樣的。
形參的初始化不在型別說明時進行,而是在呼叫函式表示式時才為形參分配記憶體空間,同時用實參來初始化形參。這樣引用的型別就是通過形參實參想結合,成為了實參的乙個別名,對形參的任何操作都會作用於實參
注意事項:1、宣告乙個引用時,必須同時對他進行初始化,使他指向乙個已存在的物件。
2、一旦乙個引用被初始化後,就不能指向其他物件。也就是說,乙個引用,從他誕生之時起,必須確定是哪個變數的別名,不能另作它用。
三、引用傳遞和值傳遞的區別只是函式的形參寫法不同。主調函式的呼叫表示式是完全一樣的。
附**#include
#include
using namespace std;
void fiddle(int in1, int &in2);
void main()
{ int count = 7, index = 12;
cout << "the values are ";
coutcout << "the values are ";
coutin2 = in2 + 100;
cout << "the values are ";
cout 所有的函式都使用 在程式執行棧中分配的儲存區。該儲存區一直保持與該函式相關聯,直到函式結束為止。那時,儲存區將自動釋放以便重新使用。該函式的整個儲存區稱為活動記錄。系統在函式的活動記錄中為函式的每個引數都提供了儲存區,引數的儲存長度由它的型別來決定。引數傳遞是指用函式呼叫的實參值來初始化函式引數儲存... 搜 函式的引數傳遞 很多時候看到的是函式的三種傳遞方式 那麼這三種引數傳遞方式有沒有什麼共同點呢?或者說它們的實質到底是怎樣的呢?1 寫乙個帶有引數的函式返回值型別 函式名 形參列表 那麼形參列表怎麼寫呢?其實我們可以按照 定義乙個變數的寫法 來寫形參列表,什麼意思呢?定義乙個int型變數 為 in... void reset int num void creset const int num void preset int p void cpreset const int p void rreset int arr 10 void initiaresert initializer listlist ...C 函式的引數傳遞
c 函式的引數傳遞
c 函式引數傳遞