C++基础知识

内存中的五大区域

栈(自动储存):函数调用时,存放局部自动变量,函数执行完毕时清除。
堆(动态储存):程序运行中根据需要可以申请使用的内存空间,不需要使用时需要进行释放。数据的生命周期不受程序或函数的生存时间控制。
对于堆空间内存的申请,操作系统则负责标记哪些单元借给了哪个程序(将空闲单元标记为被使用),当程序归还了某空间后操作系统就将被使用改记为空闲,而释放内存也只是将标记状态更改为空闲,相关指针变量的指向不会改变(依然指向哪个曾经可用的堆内存单元)
全局数据区、常量池:存放全局变量、静态全局变量、静态局部变量和一些常量
BSS段:存储未初始化的全局变量和静态变量。
代码区:存放程序代码

声明

只是规定了变量的类型和名字,而没有进行内存分配,可以理解为“描述”。

定义

不仅规定了变量的类型和名字,而且进行了内存分配,也可能会对量进行初始化。

初始化

当对象在创建时获得了一个特定值。

赋值

擦除原有的值,并赋予新值。

访问

读取或修改内存单元所存放的数据,分为读访问和写访问

地址

对于64位操作系统,一个内存地址占8个字节(8*8=64),对于一个32位的操作系统,一个内存地址占4个字节
image.png

ASCII码

编码范围为0-127,扩展字符集编码为128-255,如果比较含有扩展字符编码的字符串,则其char数据的值为负数,如果按照ASCII码比较的话,应该显式地转换为unsigned char进行比较

名字空间

为避免同名命名导致冲突(多人集成开发的情况下),一般在头文件中声明名字空间
image.png
例如上,在名字空间定义的非静态变量是一种手名字空间限制的全局变量,可以跨越不同编译单元。受限制的全局变量与全局变量一样,只能且必须在某编译单元中被定义一次,其他编译单元用extern进行参照访问声明(先声明,后定义,再使用)


C++基础知识
https://mapllle.site/2022/09/01/Language/CPP/CPPbase/
作者
MAple
发布于
2022年9月1日
许可协议