function(int &a){ a = a + 2 } 和 function(int *a){ *a = *a + 2 } 有什么区别

时间:2021-07-06 15:06:38

标签: c reference dereference

在 C(不是 C++)中

有什么区别:

function(int &a)
{
    a = a + 2;
}

和:

function(int *a)
{
    *a = *a + 2; 
}

据我所知,它们是相同的,不是吗?

如果有差异,能否举例说明?

1 个答案:

答案 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++ 的起源。)