在 C(不是 C++)中
有什么区别:
function(int &a)
{
a = a + 2;
}
和:
function(int *a)
{
*a = *a + 2;
}
据我所知,它们是相同的,不是吗?
如果有差异,能否举例说明?
答案 0 :(得分:3)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (var i = 0, j = arr.length - 1; i <= j; i++, j--) {
console.log(arr[i] + ' , ' + arr[j]);
}
Output :
1 , 10
2 , 9
3 , 8
4 , 7
5 , 6
不是 C 标准定义的代码,一般不能在 C 中使用。在 C++ 中,这声明了一个对对象的引用,它类似于一个指针但不使用所指向的对象时需要int &a
,一旦创建就不能更改,不能使用空指针。
对于 C++,讨论了指针和引用之间的差异here。在 C 中,您通常不能使用 *
。 (它可以用在一些支持它作为扩展的假设 C 实现中,这就是 C++ 的起源。)