c++学习之变量

        最近学习c++,写点东西记录下学习过程,做点笔记

        变量提供一个具名的、可供程序操作的存储空间。这是C++Primer中对变量的描述,这里强调一点,变量是一个存储空间,它就是一个可以供程序员操作的内存。

初始化

        在对象被创建时获得一个特定的值,我们说这个对象被初始化。初始化不是赋值,初始化是在创建变量的时候赋予其一个初始值,而赋值的含义是把对象当前值擦除,而用一个新值来替代。

        在很多的编程语言中,这两者的区别几乎可以忽略不计,但在c++中这个概念至关重要。

        一般在编程时,使用的变量都要初始化,这可以当做一个编程规范。

声明和定义

        声明和定义变量是不同的概念,c++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。将程序分为多个文件,就需要提供在文件之间共享代码的方法(一个文件的代码可能需要使用另一个文件中定义的变量)。为了支持分离式编译,c++将声明和定义变量区分开。

        声明:使得变量能被程序所知(简单理解就是告诉编译器这个变量的存在,至于是在哪里定义的,暂时可以先不用考虑)。声明一个变量的方式就是在变量名前添加extern,并且不要显式的初始化变量。

extern int i; //添加extern,不能初始化其值
int j;        //声明并定义j

        定义:创建变量实体,分配其所需的内存空间(此时可以初始化变量)。任何包含了显式初始化的声明就成了定义。

int i = 1;           //声明并定义
extern int i = 1;    //声明并定义

        变量可以被声明多次,但只能被定义一次。如果要在多个文件中使用同一个变量,就必须将声明和定义分离。此时,变量的定义必须且只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,决不能重复定义。

作用域

        作用域是程序的一部分,使其中的名字有特定的含义。c++中的作用域大多以花括号分隔。

        简单来说,包含全局作用域和块作用域,一旦声明之后,全局作用域的名字可以在整个程序范围内使用,块作用域只能在声明这个变量的作用域块内部使用。作用域可以嵌套,在一个作用域内部可以有另外的作用域,其中变量的含义遵循就近原则

生命周期

        变量的生命周期和其被定义的位置相关(也就是在内存中存储的位置相关)

        全局变量:在所有函数之外定义的变量,存储在全局区,在程序运行前由编译器分配内存,在程序运行结束后由编译器负责回收内存。

        局部变量:在函数体内部定义的变量(包括形参),存储在栈区,在函数调用时分配内存,在函数调用结束时,由编译器会自动回收。(都是在程序运行过程中动态完成的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值