function(int &a){ a = a + 2 } 和 function(int *a){ *a = *a + 2 } 有什么区别
What is the difference between function(int &a){ a = a + 2 } and function(int *a){ *a = *a + 2 }
在 C 中(不是 C++)
有什么区别:
function(int &a)
{
a = a + 2;
}
和:
function(int *a)
{
*a = *a + 2;
}
据我了解,它们是一样的,不是吗?
如有不同,能否举例说明?
int &a
不是 C 标准定义的代码,一般不能在 C 中使用。在 C++ 中,这声明了一个对象的 reference,就像一个指针,但在使用指向的对象时不需要 *
,一旦创建就不能更改,并且不能使用空指针。
对于 C++,讨论了指针和引用之间的差异 here。在 C 中,通常不能使用 int &a
。 (它可以在某些支持它作为扩展的假设 C 实现中使用,这就是 C++ 的起源。)
在 C 中(不是 C++)
有什么区别:
function(int &a)
{
a = a + 2;
}
和:
function(int *a)
{
*a = *a + 2;
}
据我了解,它们是一样的,不是吗?
如有不同,能否举例说明?
int &a
不是 C 标准定义的代码,一般不能在 C 中使用。在 C++ 中,这声明了一个对象的 reference,就像一个指针,但在使用指向的对象时不需要 *
,一旦创建就不能更改,并且不能使用空指针。
对于 C++,讨论了指针和引用之间的差异 here。在 C 中,通常不能使用 int &a
。 (它可以在某些支持它作为扩展的假设 C 实现中使用,这就是 C++ 的起源。)