我想在 C 中通过引用传递一个值。这两个函数是否相同?有什么区别?在 C++ 中是一样的吗?
void foo1(int * val1, int * val2)
void foo2(int &val1, int &val2)
谢谢,
我想在 C 中通过引用传递一个值。这两个函数是否相同?有什么区别?在 C++ 中是一样的吗?
void foo1(int * val1, int * val2)
void foo2(int &val1, int &val2)
谢谢,
引用仅是 C++(不是 C)。
方法的实现会有所不同,因为在 C++ 中取消引用引用不同于取消引用指针。
例如
ref.method();
对比
ptr->method();
在这两种情况下,您都在调用传递给方法的原始对象,而不是副本。
第二个不是C,只有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 )
在 C++ 中需要 foo2 但这在 C 中不起作用。
在 C 中,没有通过引用传递。相反,您可以将地址传递给指针,这实际上允许更改传递的变量的值。
第二个函数是用 C++ 编写的。
这两个函数具有不同的签名,尽管它们允许一个执行相同的任务。