【C++】变量和内存

变量

变量的声明

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

通过&获得变量内存地址

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

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

各变量所占字节

字面量

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

在字面量中分为很多类型

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

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

变量的作用域和生命周期

作用域

作用域就是定义了一个变量后,在哪里可以使用
根据作用域,变量分为局部变量全局变量

生命周期

变量对应的这块空间什么时间占用,什么时间释放?
从定义的那一行代码开始占用内存,出了大括号后释放

常量

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

对比

常量的定义语法

对于编译变量,它必须在编译时就能知道变量是多少,否则会报错

在代码中cex要在运行后通过加法运算才能是多少,所以报错了

auto自动推导类型

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

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

auto进行强制转换类型

posted @ 2025-04-11 11:33  plusu  阅读(21)  评论(0)    收藏  举报