2.2变量

变量:变量提供了一个具有名字的,可供程序操作的内存空间。变量的类型决定了变量的大小,取值,内存空间布局及可参与的运算。

在C++中,变量(variable)和对象(object)时一个意思。

一、变量定义

1、通用定义格式

类型说明符 标识符1(可初始化),...,标识符n(可初始化);

举例:

string book("math"),book2("english");
/*其中string为类型说明符,book和book2为标识符(即变量名),这两个变量
由(”字符串“)进行初始化*/

2、变量初始化

  • 初始化是在创建变量的时候给变量一个特定的值
  • 初始化不一定用=,具体如何初始化由变量类型决定
  • 初始化不是赋值,这是两个完全不同的操作,初始化是创建变量的时候给变量赋予一个初始值;而赋值是将变量当前值擦除,用一个新值代替。虽然大多时候这种区分无所谓,但原理上是有区别的
  • 不可以重复定义具有相同标识符的变量
  • 变量在定义后可以立即使用,一句话中后定义的变量可以使用先定义的变量,如下面的定义是合法的:
int a = 1; b = a + 1;
  • 对于内置类型,如果变量没有显式初始化,则定义在全部函数(包括main函数)外部的变量初始化为0;定义在函数内部的变量是不被初始化的,试图访问未被初始化的变量会引起错误。
  • 对于自定义的类,类自身决定了便是是否允许不经初始化就定义,如果不初始化会是发生错误还是给一个默认值
  • 综上,做好初始化每一个新定义的变量

二、变量声明

变量的声明用于C++的分离式编译,允许程序使用其他文件中定义的变量,其一般格式为:

extern 类型名 标识符;
  • 声明是让程序知道一个已有变量的标识符和类型;而定义是创建了一个新的变量
  • 在声明变量的时候,不可以对变量进行显式初始化。而一旦进行了显式初始化,即使有extern关键字语义也变成了定义变量,而重复定义一个变量则会报错

三、标识符

标识符就是变量的名字,具有以下规则:

  • 标识符由字母,数字,下划线组成
  • 对字母大小写敏感
  • 不可以使用数字开头,定义在函数体外的标识符不能使用下划线开头
  • 不能使用连续两个下划线
  • 变量名用小写字母,类名用大写字母
  • 变量由多个单词构成,单词间加下划线

四、变量名字作用域

  • 作用域是指的是程序的一部分,一般用{}分割;变量名只在其声明或定义的语句所在的作用域有效。
  • 全局作用域就是所有{}的外面
  • 作用域可以嵌套,外层称为外层作用域,内层称作内层作用域,如:
#include "iostream"
using namespace std;

int a = 0;
int main(){
    cout << a << endl;
    double a = 2.0;
    cout << a << endl;
}
  • 内层作用域可以使用外层作用于定义或声明的变量,外层作用于则无法使用内层作用域定义或声明的变量
  • 对于外层作用于已有的变量,内层作用域可以重新对该变量进行定义;此时外层作用域使用的是外层定义的变量,内层作用域默认使用的是内层重新定义的变量
  • 当内层作用域对外层作用域已有变量重新定义时,在内层作用域中可以通过”作用域::标识符“的方式来使用外层作用与中的变量,其中“::变量名”则使用的是在全局作用域中定义的变量
  • 如果内层要用到外层作用域中的变量,就不应该在内层作用再对该变量进行重新定义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值