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),可以指定初始值
-
概念关系图
-
注意点
- 变量只能被定义一次,但可以被声明多次
- 声明是赋予初始值就等价于定义,
extern
关键字被覆盖extern double pi = 3.1416; //definition
2.2.3 C++变量命名
2.2.4 变量名的作用域(scope of a name)
全局作用域与块作用域#
- 全局作用域(global scope):全局有效
- 块作用域(block scope):块内有效【被花括号包围的部分被称为一个块】
嵌套关系#
规则#
- 全局变量与块变量同名时,块变量会覆盖全局变量
::variables_name
:在块变量把全局变量覆盖时坚持调用全局变量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!