赞
踩
一般C++中的变量初始化有三种:
1. 缺省初始化
2. 直接初始化
3. 拷贝初始化
下面分别介绍
1. 缺省初始化
int a;
就是字面意思,定义变量a,为a开辟了一段内存空间,但是没有显式的赋予任何值。
但是,根据初始化变量的位置不同,初始化的方式是不同的
1)如果变量a声明在一个函数内部,那么系统会将a初始化成任意值
- #include <iostream>
- using namespace std;
-
- int main()
- {
- int a;
- cout << a << endl;
- }
a打印出来可能是任意值,也可能会报错
2)如果变量a声明在全局空间,或者它是线程相关变量,那么会被初始化成0
- int a;
-
- int main()
- {
- cout << a << endl;
- }
a打印出来是0
为什么这么设计?
总体原因:C++是一门讲究效率的语言,这样设计可以提高程序效率
具体来说,对于一个变量,每次初始化开辟内存空间后,为其赋值是要消耗系统资源(CPU)的。对于全局变量来说,每次只在程序开始运行的时候会初始化此变量,为其赋值消耗资源较少,此外,都赋予0保证了程序的一致性;但是对于函数中的变量,由于函数在程序运行时可能会被调用非常多次,每次调用都初始化赋值就非常浪费资源,故设计成只负责开辟内存,内存里保存的内容是随机赋值的。
2. 拷贝初始化
int a = 10;
这就是拷贝初始化,将右端的值拷贝赋予左边,等号意味着拷贝的过程
3. 直接初始化
int a(10);
这是直接初始化
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。