【参数传递方式】参数用指针好还是用数值好(区别)结构体/指针做参数

  指针与结构传递
这个要分3方面比较
1、全局内存空间,不管传递指针还是结构,都是一样的。
2、代码空间,则没有绝对,有时候传指针大,有时候传结构大,与源程序有关。当传结构时,调用函数时要copy整个结构,需要消耗代码空间和CPU时间,函数被多处调用时尤为明显。但是在函数内部访问结构元素时,寻址比通过指针块,又会节省内存和CPU时间,当结构被反复使用时尤为明显。楼主可以根据自己代码的特点选择使用。
3、栈空间,传结构用得不会比指针少,如果你的结构比较小,可以全部用寄存器传递,则与指针一样,否则就需要用栈来传递参数,这时比指针开销大。
4、传指针是有副作用的,楼主一定要注意。

 

 指针传递的副作用


    使用值传递时,函数处理的是原数据的一份copy,原始数据不会被改变。
    如果使用指针传递,则函数处理的是原始数据,一个赋值操作就可以改变原始数据
,即使函数不打算改变该数据,也难保程序没有bug而误修改。
    如果在多任务环境下,还容易出现竞争条件,需要额外的加锁操作。
    所以,如果结构不是特别大,为了节省一点内存而冒险使用指针传递是得不偿失的,只有在结构或者数组比较大时,才值得使用指针传递。
    当然,如果函数本意就是要改变原始数据时,则最好用指针传递。
原文:http://www.dzsc.com/dzbbs/20060912/20076520168921643.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值