【发布时间】:2013-07-22 04:30:10
【问题描述】:
函数原型:
1. int test (int & i);
2. int test (int * i);
函数调用:
1. test(n);
2. test(&n);
谁能解释尽可能多方面的差异? 非常感谢!
【问题讨论】:
函数原型:
1. int test (int & i);
2. int test (int * i);
函数调用:
1. test(n);
2. test(&n);
谁能解释尽可能多方面的差异? 非常感谢!
【问题讨论】:
引用不能是NULL,而指针可以。这基本上是唯一的区别。一般来说,它是一个实现细节,所以理论上,通过引用传递和通过指针传递在“底层”可能是不同的,但是,它们几乎总是以相同的方式实现。
【讨论】:
主要区别在于引用不可能为空(在格式良好的程序中),因此无需测试是否为空。除此之外,引用通常在内部以指针的形式实现,因此行为将是相似的。
除此之外,还有 style 部分的问题。在这种情况下,不同的指挥风格会偏爱其中一种。我曾在喜欢这两种风格的公司工作,第一个是因为它在 C++ 中是惯用的,第二个是因为它似乎更明确(至少对于某些程序员而言)如果参数被传递,函数将更改参数指针。我个人的感觉是,这更像是 C 程序员的约定,但它仍然存在。
【讨论】: