游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5364|回复: 10

函数参数传址是不是比传值效率要高?

[复制链接]

25

主题

77

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2010-3-23 20:39:00 | 显示全部楼层 |阅读模式
传址的话共用内存空间,传值的话另外开辟一块,感觉不论在空间上还是时间上传址都比传址快啊。

0

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2010-3-23 21:37:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

这是肯定的,传值会生成一份拷贝,无论在时间和空间上,传值都比传址慢

36

主题

512

帖子

512

积分

高级会员

Rank: 4

积分
512
发表于 2010-3-23 23:27:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

一定是地

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2010-3-24 21:34:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

有一点没说对,无论传值还是传址,本质上都是传的值。即使是传址,也会分配临时变量来存储这个地址值(不考虑某些情况下编译器的优化)。
所以传址比传值高效,通常只是对非基本变量而言。

2

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2010-3-31 13:56:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

不一定。传址就是传一个void*,不会比传int/void* 快。

23

主题

515

帖子

552

积分

高级会员

Rank: 4

积分
552
发表于 2010-4-5 12:16:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

具体情况具体分析。

传值也有可能效率高,具体看传数据的大小。

36

主题

512

帖子

512

积分

高级会员

Rank: 4

积分
512
发表于 2010-4-6 16:05:00 | 显示全部楼层

Re: Re:函数参数传址是不是比传值效率要高?

疯子阿虹: Re:函数参数传址是不是比传值效率要高?

具体情况具体分析。

传值也有可能效率高,具体看传数据的大小。

能举个例子来教育大家吗?

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2010-4-9 17:42:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

看看值是多大吧,如果是BYTE INT FLOAT这种的话,基本没什么差别
如果是一个庞大的结构体,建议还是传地址

2

主题

31

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2010-4-9 21:31:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

定义一个类,只有类方法,用这个类作参数,即使传值也没什么开销

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2010-4-19 13:32:00 | 显示全部楼层

Re:函数参数传址是不是比传值效率要高?

函数调用,会产生临时对象,所以一定要传地址或引用!!!
//函数原形
void func(someclass a)
{
a.op();
}
//编译器产生的代码
void func(someclass a)
{
someclass _a=a;//临时对象
_a.op();
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 20:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表