我想在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