-1

函数原型:

1. int test (int & i);
2. int test (int * i);

函数调用:

1. test(n);
2. test(&n);

谁能解释尽可能多的方面的差异?太感谢了!

4

2 回答 2

5

引用不能NULL,而指针可以。这基本上是唯一的区别。一般来说,它是一个实现细节,所以理论上,通过引用传递和通过指针传递在“幕后”可能是不同的,但是,它们几乎总是以相同的方式实现。

于 2013-07-22T04:34:16.640 回答
4

主要区别在于引用不可能为空(在格式良好的程序中),因此无需测试是否为空。除此之外,引用通常在内部根据指针实现,因此行为将相似。

除此之外,还有问题的样式部分。在这种情况下,不同的指挥风格会偏爱其中一种。我曾在喜欢这两种风格的公司工作过,第一个是因为它在 C++ 中是惯用的,第二个是因为它似乎更明确(至少对于某些程序员而言)如果参数被传递,函数将更改参数指针。我个人的感觉是,这更像是 C 程序员的约定,但它仍然存在。

于 2013-07-22T04:34:55.640 回答