游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1703|回复: 3

系统在什么情况下会自动为将变量的值初始化而不用人为

[复制链接]

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2006-1-27 09:10:00 | 显示全部楼层 |阅读模式
看到一个帖子,让我联想起我对这个也一直很糊涂,好象变量系统会自动初始化,但有时候好象又不是,所以请教大家。


我举几个例子

<1>  类的成员变量
class Lei
{
     public:

      int a;
      float b;

}


<2>  全局变量

int a;

WinMain()
{

}


<3> 局部变量

void Function()
{
      int a;
      bool b;
}
  

请问以上三种情况,哪种情况的变量会被系统自动初始化?
比如系统自动为变量 int 型变量a 赋值0;为bool型变量赋初值 false;



哪种需要自己手动初始化? (否则则为杂乱内容)





18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
 楼主| 发表于 2006-1-27 11:25:00 | 显示全部楼层

Re:系统在什么情况下会自动为将变量的值初始化而不用人

局部变量需要手动,全局自动初始化0
------------------------------------------------------

原来是这样。不过就这么简单吗??????

11

主题

49

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2006-1-29 02:03:00 | 显示全部楼层

Re:系统在什么情况下会自动为将变量的值初始化而不用人

全局和静态变量系统自动初始化,原因在于要把它们写入.exe文件的数据段,必须有一个值才行。

局部变量和类中的变量不会自动初始化,因为它们是在程序运行后在堆栈段建立的,原来内存中的残留值就成了他们的初值。

c++一切从效率出发,所以不会帮你初始化这片区域,以免在不必要初始化的时候降低效率。

还有用new, malloc动态创建的变量是运行时在堆区创建的,不会初始化,理由同局部变量。

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
 楼主| 发表于 2006-1-29 11:29:00 | 显示全部楼层

Re:系统在什么情况下会自动为将变量的值初始化而不用人

这下子全明白了,谢谢4楼和2楼的朋友,尤其是4楼的朋友 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 08:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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