【参数传递方式】参数用指针好还是用数值好(区别)结构体/指针做参数
指针与结构传递
这个要分3方面比较
1、全局内存空间,不管传递指针还是结构,都是一样的。
2、代码空间,则没有绝对,有时候传指针大,有时候传结构大,与源程序有关。当传结构时,调用函数时要copy整个结构,需要消耗代码空间和CPU时间,函数被多处调用时尤为明显。但是在函数内部访问结构元素时,寻址比通过指针块,又会节省内存和CPU时间,当结构被反复使用时尤为明显。楼主可以根据自己代码的特点选择使用。
3、栈空间,传结构用得不会比指针少,如果你的结构比较小,可以全部用寄存器传递,则与指针一样,否则就需要用栈来传递参数,这时比指针开销大。
4、传指针是有副作用的,楼主一定要注意。
指针传递的副作用
使用值传递时,函数处理的是原数据的一份copy,原始数据不会被改变。
如果使用指针传递,则函数处理的是原始数据,一个赋值操作就可以改变原始数据,即使函数不打算改变该数据,也难保程序没有bug而误修改。
如果在多任务环境下,还容易出现竞争条件,需要额外的加锁操作。
所以,如果结构不是特别大,为了节省一点内存而冒险使用指针传递是得不偿失的,只有在结构或者数组比较大时,才值得使用指针传递。
当然,如果函数本意就是要改变原始数据时,则最好用指针传递。
原文:http://www.dzsc.com/dzbbs/20060912/20076520168921643.html