什么时候用指针形参?什么时候用引用形参?
C/C++语言中,函数传递参数的值而不是地址,参数内部对形参的操作不会修改对应的函数外实参的值。如果希望改变实参的值,可以使用指针形参(如intfun(int*pi))或...
C/C++语言中,函数传递参数的值而不是地址,参数内部对形参的操作不会修改对应的函数外实参的值。如果希望改变实参的值,可以使用指针形参(如 int fun(int *pi))或引用形参(如int fun( int &ri ))。那么,这两种形参有什么区别,各有什么优缺点呢?
展开
2个回答
展开全部
标准 C 中是没有引用形参的,只能使用指针形参。
C++ 引入指针形参是为了降低指针灵活性带来的风险,指针形参不仅可以将数据的引用传入函数,还可以在函数内改变这个指针,也就是说在函帆行改数内部可以改变调用域的变量态判(而不仅仅是对象)。
相比起引用,指针有这些特点:
指针变量可以被重复赋值或更改(引用则不行,一经赋值不能再改)
指针变量可以为空(引用必须指向具体对象)
如果你用不到这些特性反而觉得它们会带来麻烦,而且可以接受非 Pure C(例如不需要支持 Objective-C 等其他 C 的超集),那么就用引用参数吧,甚至还可以在需要的情况下加 const 进一步约束。带滚
C++ 引入指针形参是为了降低指针灵活性带来的风险,指针形参不仅可以将数据的引用传入函数,还可以在函数内改变这个指针,也就是说在函帆行改数内部可以改变调用域的变量态判(而不仅仅是对象)。
相比起引用,指针有这些特点:
指针变量可以被重复赋值或更改(引用则不行,一经赋值不能再改)
指针变量可以为空(引用必须指向具体对象)
如果你用不到这些特性反而觉得它们会带来麻烦,而且可以接受非 Pure C(例如不需要支持 Objective-C 等其他 C 的超集),那么就用引用参数吧,甚至还可以在需要的情况下加 const 进一步约束。带滚
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询