我想在C中通過引用傳遞一個值。這兩個函數是否相同?有哪些不同?在C++中是一樣的嗎?通過引用C函數的參數
void foo1(int * val1, int * val2)
void foo2(int &val1, int &val2)
謝謝,
我想在C中通過引用傳遞一個值。這兩個函數是否相同?有哪些不同?在C++中是一樣的嗎?通過引用C函數的參數
void foo1(int * val1, int * val2)
void foo2(int &val1, int &val2)
謝謝,
引用僅C++(不是C)。
這些方法的實現將會不同,因爲解引用引用不同於解引用C++中的指針。
例如
ref.method();
與
ptr->method();
在你傳遞給方法,而不是複製原有的調用對象的兩種情況。
第二不是C,只有C++。通過引用傳遞是通過傳遞值的地址來模擬的。
在C中,你不能做foo2,因爲在C++中沒有引用運算符。 在C++中它們也不一樣。引用不能爲NULL,並且它們是常量。初始化後他們不能指向另一個位置。
void foo1(int * val1, int * val2)
相當於 void foo2(int &val1, int &val2)
C.在這兩種情況下,函數都需要地址。
第二個用於C++。這可以用來傳遞任何變量的引用。
例如,如果您有像int num1 = 10, num2 = 20;
這樣的變量。
foo2(&num1 , &num2)
然後需要foo2的在C++但這不會在C.
在C中,沒有通過引用傳遞。相反,您可以將地址傳遞給指針,這實際上允許用戶更改傳遞的變量的值。
第二個函數在C++中。
這兩個函數具有不同的簽名,儘管它們允許一個執行相同的任務。
C支持'reference'嗎? – timrau 2012-08-07 11:41:48
Duplicate of:http://stackoverflow.com/questions/596636/c-difference-between-ampersand-and-asterisk-in-function-method-declar – 2012-08-07 11:41:55