
编程语言学习
文章平均质量分 61
肝果
这个作者很懒,什么都没留下…
展开
-
第一百二十六天学习记录:C++提高:案例-评委打分(黑马教学视频)
【代码】第一百二十六天学习记录:C++提高:案例-评委打分(黑马教学视频)原创 2023-08-10 23:08:58 · 1189 阅读 · 0 评论 -
第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)
功能描述:向deque容器中插入和删除数据函数原型:这里有个坑需要避一下,就是当重复执行d1.erase(it);后程序运行会崩溃。崩溃的原因是在执行d1.erase(it)之后,迭代器it失效了,不能再继续使用。在C++的STL中,当执行erase操作后,如果要继续使用迭代器进行遍历或删除元素,需要重新获取合法的迭代器。因此,连续两次执行d1.erase(it)会导致第二次的删除操作使用了一个已经无效的迭代器,从而产生错误。原创 2023-08-09 23:05:12 · 866 阅读 · 0 评论 -
第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)
功能:双端数组,可以对头端进行插入删除操作deque与vector区别vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度比vector快vector访问元素的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间deque容器的迭代器也是支持随机访问的。原创 2023-08-08 23:17:19 · 813 阅读 · 0 评论 -
第一百二十三天学习记录:C++提高:STL-vector容器(下)(黑马教学视频)
功能描述:对vector容器进行插入、删除操作总结:尾插 push_back尾删 pop_back插入 insert(位置迭代器)删除 erase(位置迭代器)清空 clear。原创 2023-08-07 23:15:31 · 976 阅读 · 0 评论 -
第一百二十二天学习记录:C++提高:STL-vector容器(上)(黑马教学视频)
功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新的空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器。原创 2023-08-05 21:20:36 · 1330 阅读 · 1 评论 -
第一百一十六天学习记录:C++提高:STL-string(黑马教学视频)
string是C++风格的字符串,而string本质上是一个类string和char区别1、char是一个指针2、string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器。特点:string类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete替换replace,插入insertstring管理char所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。原创 2023-07-26 00:23:40 · 1467 阅读 · 0 评论 -
第一百一十五天学习记录:C++提高:STL初识(黑马教学视频)
include <vector> # include <string> //vector容器存放自定义数据类型 class Person {public :int m_Age;//创建了一个vector容器 vector < Person > v;//向容器中插入数据 v . push_back(p1);//遍历容器中的数据 for(vector < Person > :: iterator it = v . begin();it!++ it) {原创 2023-07-24 20:42:18 · 640 阅读 · 0 评论 -
第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)
个人感悟:学习了这个案例之后接下来的课程就是STL了,STL其实在我工作中写代码时经常碰到,尤其是在读同事代码的时候,因为没有学过,通过自行百度获得碎片的知识导致读起来很很吃力。这个案例给我的感觉应该是老师在模仿Vector类。相信将STL学习完之后对我工作效率会极大的提升。总结:能够利用所学知识点实现通用的数组。原创 2023-07-23 11:57:37 · 1406 阅读 · 0 评论 -
第一百一十三天学习记录:C++提高:类模板(黑马教学视频)
类模板作用:建立一个通用类,类中的成员 数据类型可以不具体定制,用一个虚拟的类型来代表。解释:template … 声明创建模板typename … 表面其后面的符号是一种数据类型,可以用class代替T … 通用的数据类型,名称可以替换,通常为大写字母总结:类模板和函数模板语法相似,在声明模板template后面加类,此类称为模板。原创 2023-07-21 23:16:55 · 903 阅读 · 0 评论 -
第一百一十一天学习记录:C++提高:模板(黑马教学视频)
1、模板不可用直接使用,它只是一个框架2、模板的通用并不是万能的。原创 2023-07-19 22:52:52 · 202 阅读 · 0 评论 -
第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统
【代码】第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统。原创 2023-07-18 17:07:02 · 479 阅读 · 1 评论 -
第一百零九天学习记录:C++实战:职工管理系统(黑马教学视频)
代码进入一个 while 循环,不断从文件流 ifs 中读取数据。循环的条件是 ifs 从文件中读取 id、name 和 dId 三个值的操作都成功。如果读取成功,循环内部的代码块会执行一次, num 的值加一。这段代码的作用是从文件中逐行读取数据,并计算读取的行数(通过 num 计数),但并没有处理读取到的数据。原创 2023-07-17 01:20:17 · 236 阅读 · 0 评论 -
第一百零八天学习记录:C++基础:文件操作
1、文件操作必须包含头文件fstream2、读文件可以利用ofstream,或者fstream类3、打开文件时候需要指定操作文件的路径,以及打开方式4、利用<<可以向文件中写数据5、操作完毕,要关闭文件1、读文件可以利用ifstream,或者fstream类2、利用is_open函数可以判断文件是否打开成功3、close关闭文件。原创 2023-07-16 11:29:33 · 623 阅读 · 0 评论 -
第一百零七天学习记录:C++核心:类和对象Ⅷ(五星重要)多态
多态是C++面向对象三大特性之一多态分为两类1、静态多态:函数重载 和 运算符重载属于静态多态,复用函数名2、动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别:1、静态多态的函数地址早绑定 - 编译阶段确定函数地址2、动态多态的函数地址晚绑定 - 运行阶段确定函数地址总结:多态满足条件:1、有继承关系2、子类重写父类中的虚函数多态使用条件:父类指针或引用指向子类对象重写:函数返回值类型 函数名 参数列表 完全一致称为重写。原创 2023-07-14 02:06:33 · 174 阅读 · 0 评论 -
第一百零四天学习记录:C++核心:类和对象Ⅶ(五星重要)继承下
1、访问子类同名成员,直接访问即可2、访问父类同名成员,需要加作用域总结:1、子类对象可以直接访问到子类中同名成员2、子类对象加作用域可以访问到父类同名成员3、当子类与父类拥有同名的成员函数,子类会隐藏父类中同名成员函数,加作用域可以访问到父类中同名函数。原创 2023-07-12 00:22:33 · 182 阅读 · 0 评论 -
第一百零一天学习记录:C++核心:类和对象Ⅵ(五星重要)继承上
继承是面向对象三大特性之一。原创 2023-07-10 00:13:54 · 150 阅读 · 0 评论 -
第九十九天学习记录:C++核心:类和对象Ⅴ(五星重要)友元&运算符重载
答:在C++中,前缀形式和后缀形式的。原创 2023-07-07 22:35:53 · 193 阅读 · 0 评论 -
第九十五天学习记录:C++核心:类和对象Ⅳ(五星重要)
在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上。原创 2023-07-02 23:47:53 · 122 阅读 · 0 评论 -
第九十四天学习记录:C++核心:类和对象Ⅲ(五星重要)
深浅拷贝是面试经典问题,也是常见的一个坑浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作1。原创 2023-07-01 23:45:28 · 172 阅读 · 0 评论 -
第九十三天学习记录:C++核心:类和对象Ⅱ(五星重要)
对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始化状态,对其使用后果是未知同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数,只是他们都是空实现。原创 2023-07-01 16:25:42 · 306 阅读 · 0 评论 -
第九十二天学习记录:C++核心:类和对象Ⅰ(五星重要)
C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为。原创 2023-06-30 23:38:28 · 341 阅读 · 0 评论 -
第九十天学习记录:C++核心:函数提高
作用:函数名可以相同,提高复用性函数重载满足条件:1、同一个作用域下2、函数名称相同3、函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件。cout << "func的调用" << endl;cout << "func(double a)的调用" << endl;cout << "func(int a)的调用" << endl;cout << "func(int a,long b)的调用" << endl;原创 2023-06-29 07:15:00 · 102 阅读 · 0 评论 -
第八十九天学习记录:C++核心:引用
答:在C++中,typedef仍然可用来定义类型别名。它的使用方式与C语言中相同。例如,你可以使用typedef来为一个复杂的数据类型创建一个更简洁的别名,以增加代码的可读性。另外,在C++11之后,引入了更强大的类型别名机制,即使用关键字using。相比于typedef,using更灵活且易于使用。例如,你可以使用using来定义别名模板、别名函数指针等。当然,在C++中,你也可以使用引用(&)来创建类型的别名。引用别名在某些情况下可以更直观地表示变量引用关系。原创 2023-06-29 05:15:00 · 150 阅读 · 0 评论 -
第八十五天学习记录:C++核心:内存分区模型
C++程序在执行时,将内存大方向划分为4个区域1、代码区:存放函数体的二进制代码,由操作系统进行管理2、全局区:存放全局变量和静态变量以及常量3、栈区:由编译器自动分配释放,存放函数的参数值,局部变量等4、堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。原创 2023-06-26 23:05:08 · 3804 阅读 · 0 评论 -
第八十二天学习记录:C++基础:C++基础部分(非面向对象)和C语言的部分区别
在C++中,创建结构体变量时,关键字struct可以省略,但是在C语言中,创建结构体变量时需要显式地使用struct关键字。所以,在C语言中创建结构体变量时,需要显式地使用struct关键字。原创 2023-06-25 09:58:14 · 331 阅读 · 0 评论 -
第七十九天学习记录:C++基础:关键字
作用:关键字是C++中预先保留的单词(标识符)在定义变量或者常量的时候,不要用关键字。原创 2023-06-19 00:45:00 · 301 阅读 · 0 评论 -
第七十二天学习记录:初读《C陷阱与缺陷》
首次快速阅读完《C陷阱与缺陷》,感觉还是读得有些稀里糊涂的。首先给人的感觉就是大部分人可以感受到的,作者对于较为初代C语言的研究已经达到了可以说是“炉火纯青”的程度。尽管作者写这本书的时候距离至今已经过去了二十几年,但很多C语言所存在的缺陷以及作者的思想至今都适用。与大部分书类似,该书也是由浅入深,由易到难的方式切入。从相对简单的“=与==”不同开始,到后面让我看不懂到抓狂的可移植性缺陷。原创 2023-06-13 11:30:27 · 1819 阅读 · 0 评论 -
第七十一天学习记录:对陈正冲编著《C 语言深度解剖》中关于1、2、4,5章作者留下部分问题的学习
因此,在定义枚举变量时,编译器会将其所定义的枚举类型映射为一个整数(如在上述代码中,GREEN=1, RED=2, BLUE=3,等等),并在内存中按照int类型的存储方式分配所需的空间。如果对一个已经被释放的指针再次进行 free ,就会发生 undefined behavior(未定义行为),包括程序崩溃,内存泄漏,程序运行出现不可预测的错误等情况,这是因为 free 函数只能释放一次动态分配的内存,多次释放同一块内存会破坏内存管理系统的数据结构。当函数的返回类型为void时,可以使用return;原创 2023-06-12 14:58:39 · 799 阅读 · 0 评论 -
第六十九天学习记录:对陈正冲编著《C 语言深度解剖》中关于3.预处理的学习以及作者留下问题的学习
对于预处理,可以说是包括笔者在内的很多人在打开代码编辑器时看到的第一句语言。比如:#pragma once,#define _CRT_SECURE_NO_WARNINGS 1,#include但因为学习C语言时预编译往往不是最先开始学习的,因此就会造成知其然不知其所以然的状况。比如笔者在加入工作之后,由于基本上没有基础,在打开别人代码首先看到一堆预编译时的第一感觉是抓狂的。有种进入陌生荒野的感觉。原创 2023-06-09 10:16:14 · 611 阅读 · 0 评论 -
第六十七天学习记录:对陈正冲编著《C 语言深度解剖》中关于变量命名规则的学习
例如://这不是常量,而是一个只读变量,具体请往后看**【规则 1-13】**原创 2023-06-07 05:15:00 · 566 阅读 · 0 评论 -
第六十六天学习记录:《高质量C/C++编程指南》中附录的考试试卷(含答案)
这套题考查的是基本编程能力……但是最后得分很尴尬,如果是“有人情味”大学老师,些许能给个“60分万岁”。但如果稍微严厉一点就肯定不及格。而且其中内存那一块的题还是上C语言视频课时老师讲的原题。看来路还很长……学无止境……不过要是没有这2个月的学习,这套题我能拿到的分数估计只有个位数……都不知道我这4年的Qt工作是怎么做下来的……问:const floatEPSINON=0.00001;答:这行代码定义了一个名为EPSINON的浮点型常量,并将其赋值为0.00001。常量使用const。原创 2023-06-06 09:15:00 · 247 阅读 · 0 评论 -
第六十四天学习记录:三条单身狗。数组里大多数都是成对的,只有三个数出现一次,找出这三条狗doge
因为如果3个数异或后是0,就可以说他们三个在相同位数上的二进制只有两种情况,第一种是都为0,第二种是两个为1,一个为0.首先我们排除他们所有位都是0的可能性,那我们就肯定能够通过Lowestbit找出这一个位置,这个位置有两个1,一个0.下面就简单了,知道了狗2的值后,我们往这群数字中加入一个虚拟的狗2,那么狗2就和虚拟狗2配对成功,剩下狗1和狗3.要找这俩是不是就可以用前面找“两条单身狗”的方法了。但本着个人的一个准则……,它的作用是求一个整数最低为1的比特位,并返回带有这唯一一个为1的比特位的值。原创 2023-06-04 10:00:00 · 201 阅读 · 0 评论 -
第六十三天学习记录:C语言个人总结
由于 count 是原子类型,因此每个线程对其进行的操作都是原子的,也就是说,在任何一个时刻,count 变量的值都是一个线程所对其进行的最后一次读写操作的结果,而不会因为线程之间的竞争而出现“竞态条件”。在上面的代码中,_Alignof(struct MyStruct) 返回的是结构体 MyStruct 对齐所需的字节数,由于这个结构体中包含了 int、char、short 等不同类型的成员,因此编译器会计算出一个最合适的对齐方式,输出的结果通常是 4 或 8,具体取决于不同的编译器和平台。原创 2023-06-02 11:12:55 · 630 阅读 · 0 评论 -
第六十二天学习记录:C语言进阶:C语言预处理2
许多C的编译器提供了一种能力,允许在命令行中定义符号。用于启动编译过程。例如:当我们根据同一个源文件要编译出不同的一个程序的不同版本的时候,这个特性有点用处。(假定某个程序中声明了一个某个长度的数组,如果机器内存有限,我们需要一个很小的数组,但是另外一个机器内存大写,我们需要一个数组能够大写。)(windows不方便操作)原创 2023-06-02 00:49:12 · 328 阅读 · 0 评论 -
第六十一天学习记录:C语言进阶:C语言预处理1
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义(PS:VS2015无效)__FUNCTION__ //打印函数名这些预定义符号都是语言内置的。return 0;1return 0;//写日志文件 int i = 0;0 };for(i = 0;i < 10;i ++) {原创 2023-06-01 16:00:21 · 608 阅读 · 0 评论 -
第六十天学习记录:C语言进阶:文件操作3&文件版通讯录改造
在之前写的静态通讯录和动态通讯录中,都存在一个致命的弊端,那就是当软件运行的过程中添加信息,不关闭软件能够正常显示信息。但一旦关闭软件,内存回收之后当再次打开软件,之前保存的信息全部都得重新添加。因此需要一个媒介将这些信息保存起来。根据之前学习的文件传输,可以通过将信息保存到文件的方式将这些信息保存下来。实现方式:在目录增加一个选项save用来存储信息。1contact.h代码132051230contact.c代码1问:TXT文件存储数据和数据库存储数据哪个更快?原创 2023-06-01 05:45:00 · 1382 阅读 · 0 评论 -
第五十九天学习记录:C语言进阶:文件操作2
而对于宽字符类型wchar_t来说,在不同的平台上,它所占的字节数是不同的,在一些平台上,wchar_t可能仍然无法存储中文字符。宽字符字符串是一种以wchar_t类型为基础单位的字符串,与标准的C字符串(char*)不同,宽字符字符串可以包含任意单个字节的字符串以及其他语言中使用的非ASCII字符(如日语中的汉字和假名等)和表情符号等。需要注意的是,在使用宽字符字符串时,需要使用相应的函数进行输入输出,这些函数的名称一般以“w”开头,如fputws、fwprintf等等。原创 2023-05-30 13:54:03 · 667 阅读 · 0 评论 -
第五十八天学习记录:C语言进阶:文件操作1
在程序设计中,一般有两种文件:程序文件、数据文件。原创 2023-05-30 10:15:28 · 709 阅读 · 0 评论 -
第五十七天学习记录:C语言进阶:结构体链表的自学
在添加新结构体时,可以使用头指针指向的结点作为链表的起点,并利用指针在其后面追加新的结点,以形成新的链表。在 C 语言中,结构体链表通常使用指针来进行创建、操作和使用,因此涉及指针相关的操作。因此,结构体链表既是 C 语言中的一种内容,又是数据结构的内容。在上面的示例中,我们先定义了一个名为Node的结构体来表示链表的每个节点,包括一个整型value和一个指向下一个节点的指针next。此外,这只是链式结构使用的一种最基本的示例,在实际应用中还需要考虑和处理其他的情况。结构体链表是数据结构的一种,它是由。原创 2023-05-29 10:20:09 · 467 阅读 · 0 评论 -
第五十六天学习记录:C语言进阶:动态版通讯录改造
当发现当前通讯录满的时候,进行扩容,每次增加2个空间。相比前一种,可以大大降低内存消耗。可以存放1000人的信息。默认可以存放3个人的信息。contact.h代码。contact.c代码。原创 2023-05-28 12:22:08 · 90 阅读 · 0 评论