Loading

2-2 C++变量

2.2.1 变量定义:列表初始化(list initialization)

  • 定义一个整型i并初始化为0

  • #include<iostream>
    using namespace std;
    int main(){
        //下面四种初始化方式都可以
        int i = 0;
        int i = {0};
        //c++新特性
        int i{0};
        int i(0);
        return 0;
    }
    
  • 注: 含有{}的的定义方式不支持类型转换(如把float的值用此方式初始化给int时会警告或报错)

2.2.2 变量的定义与声明

C++分离式编译

  • c++支持分离式编译(separate complication):允许把程序分割成多个文件在分别编译
  • 分离式编译要保障变量间的互通

定义与声明

  • 声明(declaration):extern int i;

    • 表明程序中有int i 这个变量,编译器会在所有编译文件中寻找该变量
    • 需要指明变量的类型(type)和名称(name)
  • 定义(definition):int i

    • 编译器直接创建变量 int i ,为它分配存储空间
    • 需要指明变量的类型(type)和名称(name),可以指定初始值
  • 概念关系图

    image-20220109123518895

  • 注意点

    • 变量只能被定义一次,但可以被声明多次
    • 声明是赋予初始值就等价于定义,extern关键字被覆盖
      • extern double pi = 3.1416; //definition

2.2.3 C++变量命名

  • 不能以数字和下划线_开头,不能出现连续的两个下划线

  • 不能出现关键字

    image-202201091240042482

2.2.4 变量名的作用域(scope of a name)

全局作用域与块作用域

  • 全局作用域(global scope):全局有效
  • 块作用域(block scope):块内有效【被花括号包围的部分被称为一个块】

嵌套关系

规则

  • 全局变量与块变量同名时,块变量会覆盖全局变量
  • ::variables_name:在块变量把全局变量覆盖时坚持调用全局变量

例子

image-20220109124745176

posted @ 2022-01-11 21:31  咪啪魔女  阅读(34)  评论(0编辑  收藏  举报