参数传递规则

C语言的函数参数和返回值传递方式:值传递和地址传递(即指针传递);

C++语言的函数参数和返回值传递方式:值传递,地址传递和引用传递。


规则1:不论函数是原型还是定义,都要明确写出参数的类型和名字,如果函数没有参数,使用void而不要空着;


规则2:参数命名要恰当,输入参数和输出参数的顺序要合理。


规则3:如果参数死后指针,且仅做输入用,则应该在类型前加const,以防止该指针指向的内存单元在函数体内无意中被修改。


返回值有两种途径:使用return语句和使用输出参数。

规则1:不要省略返回值的类型,如果函数没有返回值,应声明为void类型。

规则2:函数名字与返回值类型在语义上不可冲突。

规则3:不要讲正常值与错误标志混在一起返回。建议正常值用输出参数获得,而错误标志用return语句返回。

提示:如果函数的返回值是一个对象,有些场合下可以用“返回引用”替换“返回对象值”,这样可以提高效率,而且还可以支持链式表达。但有些场合下只能用“返回对象值”。

示例:

(1)定义一个对象,如下:


(2)返回引用:


如果上面赋值函数采用“返回对象值”的方式,虽然功能仍然正确,但由于return语句要把*this拷贝到保存返回值的外部存储单元中,增加了不必要的开销,降低了赋值函数的效率。

(3)返回对象:



对于上相加函数,使用了“返回对象值”的方式返回String对象,这把局部对象temp及其真正地字符串值拷贝一份给调用环境接受者。如果改用“返回引用”,那么函数返回值是一个指向局部对象temp的“引用”(即地址),而temp在函数结束时自动销毁,将导致返回的“引用”无效。


注意:不要把返回指针的函数用做左值。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值