4:bool 变量为什么初始化为FALSE

bool 变量为什么初始化为FALSE

1:FLASE 的值大家都知道,在编译器里被定义为0;但TRUE 的值呢?都是1吗?很不幸,不都是1。Visual C++定义为1,而它的同胞兄弟Visual Basic 就把TRUE 定义为-1.那很显然,这种写法也不好。

2:   如果业务代码出现异常(假设没执行), 那么fun函数的返回就是true了, 这样调用者会被误导。 相反, 如果初始化为false,  如果业务代码(假设没执行), 那么fun函数就会返回false, 这会引起调用者的注意。

    这涉及到一个虚警和漏检的概念, 虚警不可怕, 大不了虚惊一场。喊狼来啦, 哪怕是假的, 无非就是浪费功夫白白地多逃跑几次而已。 但是, 漏检就危险了, 最终会被狼吃掉的。

 

 

变量为什么要初始化

内存是在操作系统的统一管理下使用的!

1、软件在运行前需向操作系统申请存储空间,在内存空闲足够时,操作系统将分配一段内存空间并将外存中软件拷贝一份存入该内存空间中,并启动该软件的运行;

2、在软件运行期间,该软件所占内存空间不再分配给其他软件;

3、当软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间中遗留下来的数据),以便再次分配给其他软件使用。

综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据。所以通常情况下我们为一个变量,为一个数组,分配好存储空间之后都要对该内存空间初始化。

 

小知识:

初始化的全局变量            存放在      数据段

局部变量                          存放在      栈

malloc函数分配的空间     来自于      堆

未初始化的全局变量        存放于      bss段    

 

栈与堆

定义:

栈是一种运算受限的线性表,其限制是指只仅允许在表的一端进行插入和删除操作,这一端被称为栈顶(Top),相对地,把另一端称为栈底(Bottom)。

堆是一种常用的树形结构,是一种特殊的完全二叉树,当且仅当满足所有节点的值总是不大于或不小于其父节点的值的完全二叉树被称之为堆。堆的这一特性称之为堆序性。

主要区别:

栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。

堆由开发人员分配和释放, 若开发人员不释放,程序结束时由 OS 回收,分配方式类似于链表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值