- 博客(22)
- 收藏
- 关注
原创 【C++】探索vector内部机制的模拟实现
如果模板T是string,vector等自定义类型,则程序结束回收时就会引发内存错误。而对于内置类型则可以用memcpy。
2025-03-28 15:00:00
1873
原创 【C++】string类内部机制的模拟实现
在我们对STL中的string类有了一个基本的认识后,今天我们手动的从0到1去模拟实现一个STL库中的string类中的一些常用接口。
2025-03-18 15:43:26
657
原创 C/C++内存管理
注意:申请和释放单个元素的空间,使用new和delete操作符,申请和释放连续的空间,使用new[]和delete[]操作符,注意。需要注意的是,两个紧挨着定义的指针变量,所指向的malloc出来的两块内存并不一定的是紧挨着的,所以会产生内存碎片。,*pchar是对pchar这个指针进行解引用,表示首元素(常量字符串)的地址,存放在代码段(常量区)。解析:num是数组名,是一个整型数组,存放在栈区,char1也是数组名,是一个字符型数组,也存放在栈区。*pchar在哪里?
2025-02-27 17:02:27
874
原创 C++ 类和对象(下)
3.以下成员变量必须放在初始化列表位置进行初始化,否则编译会报错·引用成员变量·const成员变量·没有默认构造的类类型变量。
2025-02-13 14:05:16
929
原创 C++ 类和对象 (流插入、流提取、const)
1.C++中,可以通过重载流插入流提取运算符来定义操作2.流插入运算符 << 用于将数据插入到输出流中,它的重载函数应该以ostream&类型作为返回值,并以一个ostream&类型的参数和要输出的数据作为参数3.流提取运算符 >> 用于从输入流中提取数据。它的重载函数应该以istream&类型作为返回值,并以一个istream&类型的参数(通常是输入流对象)和要提取到的数据的引用作为参数4.流插入操作符不可以重载成员函数,因为它们参数的顺序不可以改变。
2025-02-11 20:56:22
916
1
原创 日期计算器的实现
平日里我们经常会涉及到日期计算的问题,比如:几天后是几月几日,特定的两个日期之间隔了几天等等,我们会通过查日历或通过上网使用日期计算器来实现,今天我们就来探讨日期计算器的代码以及实现原理。
2025-02-08 16:39:01
991
原创 C++ 类与对象(上)
class为定义类的关键字,Stack为类的名字,{}中为类的主体,(类定义结束时后面分号不能省略)类体中内容称为类的成员:类中的变量称为成员变量,类中的函数称为类的方法或成员函数。public://成员函数perror("malloc申请空间失败");return;top = 0;int top()private://成员变量int* array;int top;为了区分成员变量,一般会习惯成员变量加上一个特殊标识,如成员前面或后面加上_或m开头。
2025-01-21 22:58:37
801
原创 C++入门(一)
需要使用到namespace关键字,后面跟命名空间的名字,然后在跟一个{},在大括号里的即为命名空间的成员。1.1.1正常的命名空间定义//定义变量int a = 66;//定义函数//定义类型int val;使用:如果我们要访问变量a,需要加上命名空间及作用域限定符::int main()1.1.2命名空间嵌套int a = 10;int b = 20;缺省参数是声明或定义函数时为函数的参数指定一定缺省值。如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
2024-07-22 19:54:33
410
原创 C语言中的动态内存管理
引言:为什么要有动态内存分配呢?我们已经掌握的内存开辟方式有创建一个整型变量或数组变量等等,但这些空间开辟大小是固定的,数组空间一旦确定了大小就不能调整。所以C语言中引入了动态内存开辟,让程序员自己可以申请和释放空间,就比较灵活了。
2024-04-14 10:00:00
733
1
原创 C语言---结构体内存对齐与位段
引言:C语言中我们学习过结构体,结构体(struct)是一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。在定义结构体时,编译器会根据平台的要求对结构体的内存进行对齐,以提高内存访问的效率。
2024-04-13 11:08:55
508
3
原创 C语言---整数、浮点数在内存中的存储
科学计数法中的E是可以出现负数的,IEEE 754规定,存入E的真实值时必须加上一个中间数,对于8位的E,这个中间数是127,对于11位的E,这个中间数是1023。对于64位的浮点数 (double类型),最高的1位存储符号S,接着的11位存储指数E,剩下的52位存储有效数字M。对于32位浮点数(float类型),最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。(存储)模式: 是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
2024-04-09 23:12:21
462
3
原创 C语言--字符和字符串函数
函数声明:char * strncat ( char * destination, const char * source, size_t num );函数功能:函数返回字符串str2在字符串str1中第一次出现的位置,若搜索到,则返回str1的首字符地址,否则将返回NULL。2.若source指向字符串的长度小于num的时候,只会将字符串中到\0的内容追加到destination指向的字符串末尾。函数声明:char * strtok ( char * str, const char * sep);
2024-03-26 10:44:55
758
1
原创 C语言“大怪兽”--指针详解(三)
这段代码本质上是首字符h的地址存放到pstr中,也就是把一个常量字符串的首字符的地址放到指针变量中,接下来我们看一道相关题目。这就意味着我们假设 0 地址处放着无参,返回类型是void的函数, 最后是调用0地址处放的这个函数。( void(*)() )0 --将0强制类型转化为void(*)() 的函数指针类型。数组指针,顾名思义是指针变量,存放的是数组的地址,是能够指向数组的指针变量。typedef是一个关键字,是用来类型重命名的,可以将复杂的类型简单化。base:指向要排序的数组的第一个元素的指针。
2024-03-19 16:07:49
595
1
原创 C语言“大怪兽”--指针详解(一)
1.在生活中有朋友来到你家小区找你玩,倘若没有告知他楼层和门牌号,他就要在偌大的小区一户户找,可见效率之低,但如果我们根据楼层和门牌号去编号,就会得到502、603、1502...等等房间号,朋友就可以通过房间号迅速定位到你的具体位置。好了,以上就是指针系列的第一篇博客啦,希望我的分享能让大家更详细了解指针,如果文章中有错误的地方,还请大佬评论区指正,欢迎大家提出意见。void*指针是用来接收不同类型数据的地址,当我们不知道指针是什么类型的,就可以使用void*接收,这样的设计可以实现泛型编程的效果。
2024-03-12 18:08:25
975
3
原创 初识C语言
从最基础的C语言学起,紧跟着课程进度完成学习,在gittee上要努力完成小绿点的点亮,同时在学习的路上利用优快云软件写博客提升编程水平,重在坚持!从目前跟进的课程来看,除了每周约三次三小时的课之外,每天至少抽出一小时来复习以及熟练掌握学到的知识,积极动手去写代码,依旧重在坚持,希望自己能坚持下去!非科班出身的双非一本大三学生一枚,对于本专业前程的迷茫与不确定性,选择独自“破圈”,想凭借自己的努力做一些自己认为有意义的事情。刚开始不敢妄下断言,希望自己能踏踏实实的打好基础,未来进入一个中上的公司工作。
2023-11-23 23:30:55
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人