【C++】变量和内存
变量
变量的声明
初始化推荐优先使用
{}而不是=:{}更安全、统一,能避免隐式转换和窄化问题。
但在需要隐式转换或特定构造函数调用的场景(如继承基类初始化),仍需使用 = 或 ()。

通过
&获得变量内存地址

通过
()进行强制类型转换

通过
sizeof获得变量内存大小,即所占字节

各变量所占字节

字面量
在 C++ 中字面量是不可更改的常量,它们不需要额外的对象来存储其地址或值,而是直接在编译时被替换为相应的常量值。

在字面量中分为很多类型

比如long long 类型的字面量就按如下的方法,可以用字节数看出两者的不同

在变量声明中的100就是字面量

变量的作用域和生命周期
作用域
作用域就是定义了一个变量后,在哪里可以使用
根据作用域,变量分为局部变量和全局变量
生命周期
变量对应的这块空间什么时间占用,什么时间释放?
从定义的那一行代码开始占用内存,出了大括号后释放

常量
在C++11之后,常量分为
运行时常量和编译时常量

对比

常量的定义语法

对于编译变量,它必须在编译时就能知道变量是多少,否则会报错
在代码中cex要在运行后通过加法运算才能是多少,所以报错了

auto自动推导类型
在C++11及以上版本中,使用auto关键字声明变量时,编译器会根据初始化表达式自动推导变量的类型。

在用auto定义编译时常量和运行时常量也一样

auto进行强制转换类型


浙公网安备 33010602011771号