1. 程式人生 > >C++傳值呼叫與引用呼叫的區別

C++傳值呼叫與引用呼叫的區別

        簡單來說,傳值呼叫就是指當一個函式被呼叫時,C++根據實參和形參的對應關係將實參的值一一複製給形參,即實參的值單向傳遞給形參。函式本身不對實參進行任何操作,即使形參的值在函式中改變,實參的值也不會受到影響。


       引用呼叫過程中,被調函式的形式引數雖然也作為區域性變數在堆疊中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的地址。被掉函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的地址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的引數變數。


         引用傳遞方式是在函式定義時在形參前面加上引用運算子‘&’。在函式被呼叫時,引數傳遞的內容不是實參的值,而是實參的地址,即將實參的地址放到C++為形參分配的記憶體空間中,因此形參的任何操作都會改變相應實參的值。