功能原型:
1. int test (int & i);
2. int test (int * i);
函数调用:
1. test(n);
2. test(&n);
有谁可以解释尽可能多的方面的差异? 非常感谢你!
答案 0 :(得分:5)
引用不能是NULL
,而指针可以是。这基本上是唯一的区别。一般来说,它是一个实现细节,所以从理论上讲,通过引用传递和通过指针传递可能是不同的“引擎盖”,但是,它们几乎总是以相同的方式实现。
答案 1 :(得分:4)
主要区别在于引用不可能为null(在格式良好的程序中),因此不需要测试null。除此之外,引用通常在内部根据指针实现,因此行为将类似。
除此之外,还有 style 部分问题。在这种情况下,不同的conding样式将更喜欢一个或另一个。我一直在那些喜欢任何一种风格的公司,第一种是因为它在C ++中是惯用的,第二种是因为它似乎使它更明确(至少对于一些程序员)如果参数传递的话函数将改变参数指针。我个人的感觉是,这更像是C程序员的惯例,但它仍然存在。