C++进阶
文章平均质量分 90
C++进阶
轩辰~
这个作者很懒,什么都没留下…
展开
-
C++进阶——浅谈隐式转化
概念:就是当你只有一个类型T1,但是当前表达式需要类型为T2的值,如果这时候T1自动转换为了T2,那么这就是隐式类型转换。接下来看两个例子,首先是最常见的混用数值类型int a = 0;// int 转换为 longif(a == b)// 默认的operator==需要a的类型和b相同,因此也发生转换int转成long是向上转换,通常不会有太大问题,而long到int则很可能导致数据丢失,因此要尽量避免后者。第二个例子是自定义类型到标量类型的转换。原创 2024-05-08 18:02:20 · 706 阅读 · 0 评论 -
C++进阶——内存四区详解
栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是 C/C++ 函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分到足够大小的内存,然后进行返回。堆都是动态分配的,没有静态分配的堆。原创 2024-04-28 15:35:36 · 438 阅读 · 0 评论 -
常用正则表达式
24 备注:这就是最终结果了,别忘了”+”可以用”*”替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里。(包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))(可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)(网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)11 可以输入含有^%&’,;原创 2024-04-27 16:58:38 · 609 阅读 · 0 评论 -
正则表达式
正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。一个正则表达式是一种从左到右匹配主体字符串的模式,常使用缩写的术语“regex”或“regexp”。例子:寻找3到15字符数a-z,0-9的字符串。原创 2024-04-26 15:24:32 · 786 阅读 · 1 评论 -
指针的步长,野指针,空指针,万能指针
我们知道,同一编译器下的内存大小都是一定的,而所谓地址也就是内存的编号,也就是说地址的范围也是固定的。(地址=指针=内存的编号)。既然指针变量存放的都是地址,也就是说,不管什么类型的指针变量,它的大小都是相同的。换个角度说,不管什么类型的指针,大小只与系统内存有关,只与编译器有关。那么,在32位编译器中,指针变量的大小为4字节;而在64位编译器中,指针变量的大小则为8字节。那么我们就会疑惑了。既然指针变量的大小都是一样的,那为什么我们还要定义不同类型的指针变量?原创 2024-04-21 15:15:43 · 594 阅读 · 1 评论 -
提高程序效率的一点方法
如果fun1和fun2的代码量很大,例如都大于Cache的容量,则在代码1中,就不能充分利用Cache了(由时间局部性和空间局部性可知),因为每循环一次,都要把Cache中的内容踢出,重新从内存中加载另一个函数的代码指令和数据,而代码2则更很好地利用了Cache,利用两个循环语句,每个循环所用到的数据几乎都已加载到Cache中,每次循环都可从Cache中读写数据,访问内存较少,速度较快,理论上来说只需要完全踢出fun1的数据1次即可。至于整型变量的前加和后加的区别相信大家也是很清楚的。原创 2024-04-19 13:19:29 · 624 阅读 · 0 评论