游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 轰隆隆

在for循环中定义一个变量(例如 int BianLiang)这个变量是不

[复制链接]

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-22 18:34:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

尽量用英语。。。用拼音。。。。读着好别扭。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-22 20:13:00 | 显示全部楼层

Re: 在for循环中定义一个变量(例如 int BianLiang)这个变量

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2005-9-23 11:51:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

局部变量 BianLiang 不会被重复分配、释放内存,所有局部变量内存的分配都是在函数进入点进行的,并在函数退出点一起释放。所以 for 循环中的 BianLiang 只被分配一次,不会出现重复分配的情况,因而 BianLiang 变量的地址不会改变是一样的。

如果 BianLiang 是一个对象,它的构造和析构函数会被重复调用。

11

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2005-9-23 13:25:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

一群说瞎话的话,这是C++的新标准,在循环中定义变量,你用VC6.0就通不过这句,.net 就可以了

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-9-23 13:51:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

无论是Release(优化)还是Debug(不优化),,局部变量都不会重新分配

所有的局部变量都在函数开头分配好的,,所谓的作用域只是在语法上区别的

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2005-9-23 14:57:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

作用域,对程序员来说就是该变量存在的区域,作用域检测是由编译器强制执行的,对程序员来说作用域之外的变量就如已经被释放掉了一样,但是,在进程中该变量的内存可以未被释放。在语义上来说,作用域开始点是对象的构造点,作用域结束点是对象的析构点,但作用域结束点并不一定是对象内存的释放点。

所以,本例 for 循环中的局部变量就可以使用同一块内存重复进入新的作用域,尽管使用同一块内存,但由于构造和析构函数的调用,使得每一次进入作用域时,该对象都是一个全新的对象。对于基本数据类型来说(如 int),由于没有构造和析构函数,如果在定义时没有对变量进行初始化,那么在下一个循环进入作用域时,仍然会保留上一次循环的结果。在循环中通过判断循环变量 i 的值,这个保留下来的结果还可以正常使用。

14

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2005-9-24 12:27:00 | 显示全部楼层

Re: Re:在for循环中定义一个变量(例如 int BianLiang)这个变量

highgame: Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是不是随着for循环被声明了n次?

一群说瞎话的话,这是C++的新标准,在循环中定义变量,你用VC6.0就通不过这句,.net 就可以了

在VC6.0下是肯定可以编译通过的.

1

主题

11

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2005-10-3 11:24:00 | 显示全部楼层

Re: Re:在for循环中定义一个变量(例如 int BianLiang)这个变量

jeffery_lush: Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是不是随着for循环被声明了n次?

这个BianLiang变量,,会被分配十次。他在for里面,所以出了for,这个变量就被注销了!

如果根据AUTO类型变量对可见性和寿命的规定,可知AUTO类型变量仅在其定义域(这里是FOR{})内拥有寿命。也就是说每次循环后,本次定义的 BianLiang即失去寿命,系统当然会注销他的户口。所以从这个角度,我赞成这位朋友的观点,这个BianLiang变量每进入FOR{}一次就会被定义一次。

30

主题

398

帖子

403

积分

中级会员

Rank: 3Rank: 3

积分
403
QQ
发表于 2005-10-4 10:29:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

..........
不如你建个工程,监视一下那个变量就明白了.
太理论的东西我不信.

1

主题

40

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2005-10-5 14:35:00 | 显示全部楼层

Re:在for循环中定义一个变量(例如 int BianLiang)这个变量是

一般来说,内存空间是在函数入口处分配,构造和析构函数在循环内肯定要调用,循环几次就调用几次。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-28 01:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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