C/C++基础知识的查缺补漏
文章平均质量分 62
我个人时不时的查缺补漏
.ね.
这个作者很懒,什么都没留下…
展开
-
引用和指针
源代码int &b = a和int* const c = &a的汇编代码是一模一样的,都是把 a 变量的地址放入eax寄存器中,然后在赋值给变量b和c。既然"别名"也是变量,那肯定也有内存地址,可是我们对别名取地址时,只能得到原名对象数据的地址,这是因为编译器改变了引用的取地址含义,这样想要获得"别名"变量的地址变得很困难,但是我们记住"别名"变量有地址,大小和指针一样。对别名的操作本质上都是对原名变量的操作。既然引用是指针常量实现,那么这个"别名"变量也是有内存空间占用的,且占用大小同指针大小一样。原创 2023-11-16 15:04:45 · 37 阅读 · 1 评论 -
浮点数、字符和类型转换知识和注意点
因为如果两个不相同类型数据计算, 是要通过类型转换顺序表的等级靠向等级高的,如int和unsigned类型计算,int类型低于后者,所以计算结果为unsigned类型数据,即结果要遵循unsigned类型规则解释数据。被用作格式说明符,如果要打印实际的百分号,需要用两个百分号。ps:因为看到浮点数想起来平时写题会有输出小数几位的需求。: 用于打印十六进制整数,小写或大写字母表示。: 用于打印浮点数。发送运算过的类型转换规则。: 用于打印八进制整数。: 用于打印字符串。: 用于打印百分号(原创 2023-11-14 21:59:55 · 85 阅读 · 1 评论 -
位运算的学习
先通过上题的思路来处理不是2的幂的数据,然后分析4的幂的数据必然是数据位上的1唯一且在奇数位上,那我们取得它得最低位数据1并通过了2的幂的检测后,这个数据位1必定要使得在奇数位则把找出一个所有偶数位为1的数来与之&操作若算出来为0则表示数据1的的确确在奇数位上,反之错误。c ^ b = a;具体代码原理即 res = 0^4^1^2^1^2 = 0^(1^1)^(2^2)^4 = 0^4 = 4。:RF1 = (n&-n)即找到n的最低位的1,如果等于本身即最低位的1唯一一个且也是最高位的1则true。原创 2023-11-15 14:31:25 · 46 阅读 · 0 评论 -
计算机基础知识和C/C++进制定义变量示范
类型 名字 {初始值};或者 类型 名字 = 初始值;原创 2023-11-14 17:12:36 · 140 阅读 · 1 评论 -
C/C++如何运行起来,以及在内存的分布情况
即理解为此时0000 0000 ~ 1111 1111的逻辑地址都是内存自己知道的。将错误所造成的影响限制在尽可能小的范围,以便使得源程序的其余部分可以继续被编译下去,以进一步发现其它可能的错误。假如此时放到了0000 0000 0000 ~ 0000 1111 1111的物理地址,这样本地指令编译出来的地址码操作码的地址都是错误的,因为参照对象是0000 0000 ~ 1111 1111。逻辑地址(相对地址):我们都会设定一个进程的地址是从0开始的,而逻辑地址就是相对于进程其实地址而言的地址。原创 2023-11-14 15:37:14 · 64 阅读 · 1 评论 -
if-else和switch的C++17新用法和细节注意与对比
可是假设如果我发现我的a变量总是在重复定义,换句话说我就是想在switch作用域下的变量呢 C++17。而switch则是类似维护一张表只需要比较一次就可以知道自己要跳转的位置。if-else判断即为每多一个选项就判断一次跳转一次。如下两图if和switch的底层反汇编实现原理。所以当选项较多推荐switch。原创 2023-11-15 20:15:10 · 72 阅读 · 0 评论 -
循环之for、while、do-while、goto的底层效率
各个循环的底层执行效率为默认情况下。原创 2023-11-15 21:05:27 · 320 阅读 · 0 评论 -
C和C++动态内存分配
delete释放内存空间调用第一个元素的析构函数,delete[]释放内存空间,调用每个元素的析构函数。对于类来说,free仅仅释放内存。delete除了释放内存外还会调用析构函数。对于类来说,malloc仅仅分配内存。new除了分配内存外还会调用构造函数。C++的动态内存分配的底层实现基于C语言的动态分配实现的。delete是运算符,可以重载。new是运算符,可以重载。对于普通数据类型无区别。对于普通数据类型无区别。对于普通数据类型无区别。原创 2023-11-16 14:21:07 · 41 阅读 · 1 评论 -
C语言的字符串细节
【代码】C语言的字符串细节。原创 2023-11-16 20:18:02 · 40 阅读 · 1 评论 -
数组和指针
假设此时书架的容量只有3本书,为了充分利用,当我需要1号书时,我去拿1号书时会顺手把2、3号书一把手放到书架,因为2,3号书是连续放在书包的且可能后续会用到而提前做准备。如果突然要4号书又要去打开书包,又把书架的2、3号数换成5,6号书,如果后续又要拿2号书时,这样对书架的作用机制并没有体现出来】但是内存连续情况是arr[0][0]—arr[0][1]—arr[0][2]—arr[1][0]—arr[1][1]—arr[1][2]【总是低维先连续后连续高维】指针可以通过存储的地址值解引用。原创 2023-11-16 11:51:06 · 216 阅读 · 1 评论