
C++核心编程
文章平均质量分 70
轻染QAQ
这个作者很懒,什么都没留下…
展开
-
C/C++——联合体的内存模型和应用
联合体和结构体的区别联合体和结构体都是可以存储不同类型数据的构造数据类型,结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙,位域知识),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。大端模式和小端模式大端模式(Big-endian..原创 2021-10-25 16:02:36 · 405 阅读 · 0 评论 -
C/C++——小数在内存中的存储方式
小数的存储方式分为定点数存储和浮点数存储,但是根据IEEE 754 标准,现在用的编译器都是浮点数存储的。首先所有的数据都要先转化成二进制数才能进行存储,但是在转换的过程中会遇到一个问题,小数部分转换成二进制使用“乘二取整法”(就是不断乘以 2,直到小数部分为 0),一个有限位数的小数并不一定能转换成有限位数的二进制,只有末位是 5 的小数才有可能转换成有限位数的二进制,其它的小数都不行。这就造成了转化出来的截取的二进制小数最后一位精度是不确定的。定点数存储,即小数点固定。用4个字节(32位)来存储无原创 2021-10-25 14:56:57 · 2912 阅读 · 0 评论 -
C/C++——位域的使用
内容先欠着原创 2021-10-25 14:42:28 · 1697 阅读 · 0 评论 -
C/C++——整数在内存中的存储方式
整数在内存中的存储方式就一句话**在计算机内存中,整数一律采用补码的形式来存储。当读取整数时要采用逆向的转换,也就是将补码转换为原码。**所以在有符号数和无符号数之间相互转换的时候会出现一些问题。下面会举例说明。简要说介绍一下原码、反码、补码:原码:将一个整数转换成二进制形式,就是其原码。反码:对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位以外的所有位(数值位)取反。补码:对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。举个例子,原创 2021-10-24 18:47:07 · 2885 阅读 · 1 评论 -
C++核心编程——内存分区模型
1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程。1.1 程序运行前 在程序编译后,生成了.exe可执行程序,未执行该程序前分为两个区域。 代码区: 存放 CPU 执行的机器转载 2021-05-20 15:31:24 · 103 阅读 · 0 评论 -
C++核心编程——const修饰指针
指针变量所占内存空间由操作系统决定32位操作系统sizeof(int *)=4字节 所有类型都是4字节64位操作系统sizeof(int *)=8字节 所有类型都是8字节NULL(0)用于给指针赋初值,但不可以访问,0-255的内存编号是系统占用的,因此不可以访问。野指针:指针变量指向非法内存空间(系统占用的空间,用户不具有权限访问)。const修饰指针1.常量指针:指针指向可以修改,指向的值不可以修改const int * p=&a; p=&b; 可以修原创 2021-05-10 20:04:10 · 107 阅读 · 0 评论