C 函式引數與按值傳遞

2021-10-05 20:55:17 字數 821 閱讀 2302

c++ 通常安值傳遞引數,這意味著將數值引數傳遞給函式,而後者將其賦給乙個新的變數。

double volume = cube(side);

其中,side 是乙個變數。

cube 的函式頭為:

double cube(double x);    // x 可以不寫

被呼叫時,該函式將建立乙個新的名為 x 的 double 變數,cube() 使用了 side 的副本,不會影響 main() 中的資料。

形參:用於接收傳遞值的變數。接收的。

實參:傳遞給函式的值。原來的。

注意:實參可以是常量,變數或表示式,形參必須是左值,並且只在呼叫函式時定義(也就是說不能是返回引用,自增表示式等)。

出於簡化目的,c++ 標準使用引數( argument )來表示實參,使用參量( parameter )來表示形參。

在函式中宣告的變數(包括引數)是該函式私有的。在函式被呼叫時,計算機將為這些變數分配記憶體;在函式結束時,計算機將釋放這些變數使用的記憶體(有些 c++ 文獻將分配和釋放記憶體稱為建立和毀壞變數)。這樣的變數稱為區域性變數,因為它們被限制在函式中,這樣有助於保持變數的完整性。這還意味著,如果在 main() 中宣告了乙個名為 x 的變數,同時在另乙個函式中也宣告了乙個名為 x 的變數,則它們是兩個完全不同的、毫無關係的變數。這樣的變數也稱為自動變數。所以函式形參的儲存單元是動態分配的。

函式可以有多個引數,只需使用逗號將這些引數分開即可:

n_chars('r', 25);

函式引數傳遞方式 按值傳遞

基本資料型別賦值,是直接值發生了賦值,因此改變後,各自相互不影響。但是引用資料型別的賦值,是儲存在變數物件中的引用發生了賦值,因此複製之後的這兩個引用實際訪問的實際是同乙個堆記憶體中的值。當改變其中乙個時,另外乙個自然也被改變。第乙個是屬於基本型別賦值,a和b賦值完兩個就完事了,以後各走各的.第二個...

C 引數傳遞中按值傳遞與按引用傳遞引數的區別

這是引數傳遞的預設方式。在這種方式下,當呼叫乙個方法時,會為每個值引數建立乙個新的儲存位置。實際引數的值會複製給形參,實參和形參使用的是兩個不同記憶體中的值。所以,當形參的值發生改變時,不會影響實參的值,從而保證了實參資料的安全。下面的例項演示了這個概念 using system namespace...

C 函式引數傳遞 按值和引用

c 中的資料型別.分值型別和引用型別兩大類.值型別 直接儲存資料的值,儲存在記憶體中的stack 堆疊 中 引用型別 儲存對值的引用,實際上儲存的就是乙個記憶體的位址.引用型別的儲存分成兩塊,實際值儲存在託管堆 heap 中.實際值的記憶體位址儲存在stack中 當使用引用型別時先找到stack中的...