当前位置:   article > 正文

C++中的变量初始化_c++ 结构体全局变量初始化

c++ 结构体全局变量初始化

一般C++中的变量初始化有三种:

1. 缺省初始化

2. 直接初始化

3. 拷贝初始化

下面分别介绍

1. 缺省初始化

int a;

就是字面意思,定义变量a,为a开辟了一段内存空间,但是没有显式的赋予任何值。

但是,根据初始化变量的位置不同,初始化的方式是不同的

1)如果变量a声明在一个函数内部,那么系统会将a初始化成任意值

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a;
  6. cout << a << endl;
  7. }

a打印出来可能是任意值,也可能会报错

2)如果变量a声明在全局空间,或者它是线程相关变量,那么会被初始化成0

  1. int a;
  2. int main()
  3. {
  4. cout << a << endl;
  5. }

a打印出来是0

为什么这么设计?

总体原因:C++是一门讲究效率的语言,这样设计可以提高程序效率

具体来说,对于一个变量,每次初始化开辟内存空间后,为其赋值是要消耗系统资源(CPU)的。对于全局变量来说,每次只在程序开始运行的时候会初始化此变量,为其赋值消耗资源较少,此外,都赋予0保证了程序的一致性;但是对于函数中的变量,由于函数在程序运行时可能会被调用非常多次,每次调用都初始化赋值就非常浪费资源,故设计成只负责开辟内存,内存里保存的内容是随机赋值的。

2. 拷贝初始化

int a = 10;

这就是拷贝初始化,将右端的值拷贝赋予左边,等号意味着拷贝的过程

3. 直接初始化

int a(10);

这是直接初始化

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/106401
推荐阅读
相关标签
  

闽ICP备14008679号