参数通过引用C函数

时间:2012-08-07 11:40:06

标签: c++ c pointers reference parameters

我想在C中通过引用传递一个值。这两个函数是否相同?有什么区别?在C ++中是一样的吗?

void foo1(int * val1, int * val2)

void foo2(int &val1, int &val2)

谢谢,

5 个答案:

答案 0 :(得分:4)

引用只是C ++(不是C)。

方法的实现将有所不同,因为解引用引用与在C ++中取消引用指针不同。

e.g。

ref.method();

VS

ptr->method();

在这两种情况下,您都要调用传递给方法的原始对象,而不是副本。

答案 1 :(得分:1)

第二个不是C,只有C ++。通过引用传递是通过传递值的地址来模拟的。

答案 2 :(得分:1)

在C中你不能做foo2,因为在C ++中没有引用运算符。 在C ++中,它们也不一样。引用不能为NULL,它们是常量。初始化后,他们无法指向其他位置。

答案 3 :(得分:1)

void foo1(int * val1, int * val2)相当于 在C.案例中,void foo2(int &val1, int &val2)需要地址。

第二个用于C ++。这可用于传递任何变量的引用。

例如,如果您有一个像int num1 = 10, num2 = 20;这样的变量。

然后foo2(&num1 , &num2 )在C ++中需要foo2,但这在C中不起作用。

答案 4 :(得分:0)

在C中,没有通过引用传递。相反,您可以将地址传递给指针,这实际上允许人们更改传递的变量的值。

第二个功能是在C ++中。

这两个函数具有不同的签名,但它们允许执行相同的任务。