什么时候用指针形参?什么时候用引用形参?

C/C++语言中,函数传递参数的值而不是地址,参数内部对形参的操作不会修改对应的函数外实参的值。如果希望改变实参的值,可以使用指针形参(如 int fun(int *pi))或引用形参(如int fun( int &ri ))。那么,这两种形参有什么区别,各有什么优缺点呢?

第1个回答  2016-04-13
标准 C 中是没有引用形参的,只能使用指针形参。
C++ 引入指针形参是为了降低指针灵活性带来的风险,指针形参不仅可以将数据的引用传入函数,还可以在函数内改变这个指针,也就是说在函数内部可以改变调用域的变量(而不仅仅是对象)。
相比起引用,指针有这些特点:
指针变量可以被重复赋值或更改(引用则不行,一经赋值不能再改)
指针变量可以为空(引用必须指向具体对象)
如果你用不到这些特性反而觉得它们会带来麻烦,而且可以接受非 Pure C(例如不需要支持 Objective-C 等其他 C 的超集),那么就用引用参数吧,甚至还可以在需要的情况下加 const 进一步约束。本回答被网友采纳
第2个回答  2016-04-13
看个人的爱好风格
相似回答