"传递参考"的区别是什么?和#34;通过指针/地址"在C ++函数中?

时间:2013-07-22 04:30:10

标签: c++ function pointers

功能原型:

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

函数调用:

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

有谁可以解释尽可能多的方面的差异? 非常感谢你!

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

除此之外,还有 style 部分问题。在这种情况下,不同的conding样式将更喜欢一个或另一个。我一直在那些喜欢任何一种风格的公司,第一种是因为它在C ++中是惯用的,第二种是因为它似乎使它更明确(至少对于一些程序员)如果参数传递的话函数将改变参数指针。我个人的感觉是,这更像是C程序员的惯例,但它仍然存在。