- 博客(40)
- 收藏
- 关注
原创 0904 类的继承
父类的构造函数会被继承到子类中,在构造的顺序中,是先构造父类,再构造子类在创建子类时,会先调用父类的构造函数,再调用子类的构造函数。
2025-09-04 19:31:28
1003
原创 0901 C++的动态内存分配与回收
在初始化一个类对象时使用,只有构造函数有初始化列表1.浅拷贝:当使用系统默认的拷贝构造函数,就是浅拷贝2.深拷贝:当使用程序员自己定义的特殊拷贝构造函数,就是深拷贝当类成员里面有一个指针类型的成员,在使用浅拷贝时,系统默认直接赋值指针地址到新的类对象,此时两个类对象的指针成员的存储地址指向同一片区域,当有一个类对象改变时,会连带另一个类对象改变。
2025-09-01 20:50:52
1128
原创 0830 C++引用&const&函数重载&结构体&类
没有定义带默认参数成员的值,则使用默认参数,定义了则使用定义的值void fun(string name="kitty") //默认参数值 string name = "hello meimei"int main()fun();return 0;
2025-08-30 15:08:22
720
原创 0828 C++基础
本文梳理了C++编程的核心知识点:1. C++作为面向对象语言,具有封装、继承、多态三大特性,完全兼容C语言;2. 详细介绍了输入输出函数(cin/cout)、基本数据类型及其格式化输出方式;3. 重点讲解string字符串类型,包括初始化、比较、常用函数及与字符数组的转换;4. 说明数组容器array的使用方法及迭代器操作;5. 解释命名空间的作用和使用方法;6. 最后给出一个字符串统计程序示例,演示如何统计各类字符数量。全文系统性地整理了C++基础语法要点,适合初学者快速掌握核心概念。
2025-08-28 20:54:14
794
原创 0821 sqlite3_get_table函数(数据库函数的补充)
客户端可以注册登录退出(一级导航栏),查词查找自己查询的记录和返回上一级导航栏(二级导航栏)服务器端需创建用户数据库(信息表和记录表)和单词数据库,并完成与客户端的反馈和完成其功能。
2025-08-21 22:10:24
533
原创 0820 SQlite与c语言的结合
4.int (*callback)(void*,int,char**,char**):回调函数四个参数。int (*callback)(void*,int,char**,char**):回调函数。原型:insert into 表名 values (数据1, 数据2, 数据3);原型:const char *sqlite3_errmsg(sqlite3*);原型:int sqlite3_errcode(sqlite3 *db)原型:int sqlite3_close(sqlite3*);
2025-08-20 21:15:03
1132
原创 0815 UDP通信协议&TCP并发服务器
服务器端:1.用socket函数创建一个套接字文件2.创建服务器端地址结构体并赋值3.用ford函数将套接字文件与地址结构体绑定4.创建接收客户端地址结构体5.利用sendto和recvfrom函数传输和接收信息客户端:1.用socket函数创建一个套接字文件2.创建客户端地址结构体并赋值3.用ford函数将套接字文件与地址结构体绑定4.创建服务器端地址结构体5.利用sendto和recvfrom函数传输和接收信息。
2025-08-16 14:48:09
972
原创 0807 IO线程的同步互斥
由于线程之间的数据是共享的,导致多线程访问数据时,线程的光标位置难以确定,故引入同步互斥。临界资源:多线程访问的资源互斥:同一时间只能一个线程访问同步:互斥的基础上,保证了顺序。
2025-08-07 20:54:46
1053
原创 0806线程
由于进程之间的切换,会伴随着cpu的资源转换,需要花费时间。所以创建一个资源共享的线程就成为了解决问题的方法,进程之间的数据交互需要引入同步互斥。
2025-08-06 21:38:13
784
原创 0805 进程的getpid&exit&wait函数
a.wait:阻塞调用的进程,当该进程的子进程结束时(exit),回收该子进程资源,并接收该子进程的退出状态值(exit传递给父进程的值)< -1 等待进程组id等于pid绝对值的进程组下的任意子进程 -1234 进程组id |-1234|=1234 进程组号。b.waitpid:可以选择是否阻塞调用函数,可以选择作用的子进程,回收该子进程的资源,并接收该子进程的退出状态值。b.gerppid:成功返回调用进程的父进程的进程id,没有失败值。父 ---- 子 ---- 孙 ---- 曾孙。
2025-08-05 20:46:39
850
原创 0803 思维导图+小项目
Part 2.使用文件IO函数,实现文件的拷贝。Part 3.使用标准IO函数,实现图片的拷贝。Part 4.使用文件IO函数,计算文件的大小。Part 1.思维导图。
2025-08-03 22:10:58
178
原创 0731 IO进程基础
io进程是(内存) 与(程序员和系统文件)之间的交互,例如我需要调用系统文件作为程序的数据,就需要input函数。我需要将数据保存到系统文件,则需要output函数。
2025-07-31 21:04:39
1287
原创 0730 数据结构重点整理
1.队列是先进先出的一个线性结构,会定义两个指针front和rear指向0,当插入一个数据时,rear++,当删除一个数据时front++,所以队列只能先进先出,当队列已经插入最大值的数据了,并且将所有数据都删除了,此时front == rear == maxsize,此时就会产生假溢出。将第一个元素设为基准值,每次循环把大于基准值的放基准值右边,把小于基准值的放左边(升序),即完成了一个数的排序,然后利用递归算法循环调用自己则完成排序。也可以进a出a,进b出b,进c出c;
2025-07-30 13:32:20
511
原创 0728 哈希表&折半查找&树&二叉树
b.中序遍历:左根右,先输出左节点,如果左节点还有左节点也是先继续输出左节点,然后再是根节点和右节点。f.结点的层数:是从根结点到某结点所路径上的层数【根结点表示第一层】运用链表的哈希表,就是创建一个链表数组,根据原数据的地址%p得到的值,就行在对于的数组的链表插入。a.先序遍历:根左右,先输出根节点,在输出左节点,最后再是右节点。d.祖先结点:是当前结点的直接及间接上级结点。d.分支结点(内部结点):是度不为0的结点。b.孩子结点:是指当前结点的直接下级结点。e.叶结点(终端结点):是度为0的结点。
2025-07-28 20:47:19
790
原创 0724 双向链表
摘要:本文介绍了双向链表的基本操作实现,包括节点创建、插入、删除和查找等。双向链表节点包含prev和next指针,头节点的prev和尾节点的next指向NULL。具体实现了头插、尾插、头删、尾删等操作,每个操作都需处理指针的重新指向问题。此外还实现了按位置查找、修改、插入和删除功能,在插入和删除时需特别注意边界条件处理,如是否为头/尾节点。所有操作都包含错误检查并维护链表长度(len)。代码采用结构体嵌套联合体存储数据,提高了内存使用效率。
2025-07-24 20:44:06
926
原创 0723 单项链表
本文介绍了单向链表的基本实现方法,主要包括:1)使用结构体和联合体创建链表节点;2)实现头插、头删、尾插等基本操作;3)实现按位置/元素查找、修改和删除功能;4)链表逆置和排序算法;5)查找倒数第n个节点的双指针法。文中详细说明了每个操作的具体实现步骤和注意事项,如头插法需要更新头节点指针,删除操作需要释放内存等。代码示例展示了链表常见操作的实现逻辑,包括使用临时指针进行节点交换的排序算法,以及通过双指针间隔查找倒数节点的技巧。
2025-07-23 21:16:37
1033
原创 0722 数据结构顺序表
两种方式都是逻辑上相连,但是链式存储物理空间上没有相连。一个下标从0开始,和数组相似的,连续存储的空间。使用一段连续的空间存储多个相同类型的数据元素。使用任意一段空间存储多个相同类型的数据元素。用索引方法和数据表实现查找的结构。使用哈希存储的一直存储方式。元素之间有一对一的关系。元素之间有多对多的关系。元素之间有一对多关系。
2025-07-22 20:20:22
388
原创 0721 宏&分文件编译&typedef的用法&Makefile文件的编辑
本文总结了C语言编程中的几个重要知识点:1)宏定义与宏函数的使用,包括条件编译指令(#if/#ifdef等)和宏操作符(##);2)分文件编译的组织方式;3)typedef关键字重定义数据类型;4)Makefile的编写,包括变量定义、模式匹配和常用函数(wildcard/patsubst)。这些知识点涵盖了C语言预处理、项目组织、编译管理等核心内容,是提高代码质量和开发效率的关键技术。文末还提到通过牛客网刷题来巩固这些知识点的实践方法。
2025-07-21 20:37:49
1115
原创 0717 结构体与函数的封装结合使用,实现程序目的
1) 学校人员管理系统,使用结构体和联合体存储学生(姓名/性别/分数)和教师(姓名/性别/职务)信息,实现了内存分配、数据输入、分类统计和输出功能;2) 商品管理系统,通过结构体存储商品信息(名称/单价/数量/描述),实现了排序、最贵商品查找和总价计算功能;3) 结构体相关知识点总结,包括结构体指针、嵌套、内存对齐规则(32/64位系统差异)、位域压缩技术以及共用体和枚举的使用方法。所有程序均采用动态内存分配,最后正确释放内存。
2025-07-17 21:34:05
1206
原创 0716 指针函数和函数指针&动态地址分配&递归&结构体的定义
【摘要】本文系统介绍了C语言中指针相关概念与应用,主要内容包括:1)指针函数与函数指针的区别,前者返回指针,后者指向函数;2)六种特殊指针类型(数组指针、指针数组、常量指针等)的定义与用法;3)动态内存分配(malloc/free)的原理及内存泄漏防范;4)递归函数的实现三要素(出口、逻辑、返回段)及在数列、进制转换中的应用;5)结构体类型的定义、初始化及成员访问方法。文中通过多个代码实例(如斐波那契数列、猴子吃桃问题等)演示了这些核心概念的具体实现。
2025-07-16 20:59:57
860
原创 0715 二级指针&特殊指针&函数
本文主要介绍了C语言中的指针和函数相关概念。内容包括:二级指针的定义与使用(存储指针地址,偏移量8字节);特殊指针类型(野指针、空指针等)及段错误的产生原因;函数的定义、调用、声明、返回值与参数;变量分类(全局/局部)及存储类型(auto/register等);值传递与地址传递的区别;数组作为函数参数的传递方式;并实现了自定义的字符串操作函数mystrcpy和mystrcat。全文系统梳理了C语言指针与函数的核心知识点,通过代码示例展示了关键概念的实际应用。
2025-07-15 20:51:15
1053
原创 0714 指针与一维二维数组&数组指针&指针数组
本文总结了C语言指针与数组的核心知识点:1)指针与一维字符数组的关系,包括地址访问和元素访问的等价形式;2)内存分区特点(栈区、堆区、rodata区);3)指针与字符常量的关系及修改限制;4)转义字符的长度计算规则;5)二维数组与指针的关系,包括行指针、列指针和数组指针;6)指针数组的定义和使用;7)main函数外部参数的访问方法。重点说明了指针在不同内存区域的访问特性,以及指针与数组之间的各种等价访问方式。
2025-07-14 20:56:46
1097
原创 0711 C语言二维字符数组&指针与数组的运用
本文主要介绍了C语言中二维字符数组和指针的相关知识。内容包括:1) 二维字符数组的定义、初始化和赋值方法;2) 指针变量的定义、初始化及与变量的关系;3) 指针运算规则和数据类型的应用;4) 指针与一维数组的配合使用;5) 实际应用案例:通过指针实现冒泡排序算法和查找数组最大值。文中通过代码示例详细演示了指针操作数组元素的方法,并解释了指针数据类型对内存操作的影响,以及指针强制类型转换在大小端判断中的应用。
2025-07-11 20:53:09
1078
原创 0710 一维字符数组和字符串函数族的函数的使用
本文系统整理了C语言中字符数组与字符串处理的核心知识点,包括:1) 一维字符数组的定义、初始化(完全/不完全/不定长)及字符串处理逻辑('\0'的作用);2) 字符串输入输出函数(gets/puts)和关键字符串函数(strlen/strcpy/strcat/strcmp)的实现原理及自定义实现;3) 二维数组的定义与初始化方法;4) 实用案例:二维数组最大值定位、十进制转二进制、单词计数、字符串逆置等。通过代码示例演示了各功能的实现过程,突出了'\0'在字符串处理中的关键作用。
2025-07-10 21:21:26
573
原创 2025 0709 作业
相邻的两个元素,两两比较,每次排出待排序序列中最大的元素放在最后,再进行下一次排序,直到序列中的元素都有序排序需要排长度-1次。Part 3. 终端输入一串字符,以'#'结束,统计大写字母、小写字母和数字字符的个数。b.数组越界后的情况:1.输出随机值 2.报段错误。Part 2. 定义一个有10个元素的数组,终端输入学生成绩,将成绩排序后输出。每次从待排序序列中找到最大/最小的元素和待排序序列中的第一个元素交换。长度:sizeof(arr)/sizeof(arr[0])5.数组的大小和长度。
2025-07-09 20:50:59
1030
原创 2025 0708作业
在后面判断条件时需要判断总钱是否为百钱:5*a + 3*b + c/3 == 100,由于计算机中/为整除,会造成有:公鸡3只有母鸡20只有小鸡77只,条件判断错误。先执行表达式1,将循环变量给初始值,然后判断表达式2的条件是否成立,如果成立执行循环,再执行表达式3,表达式3执行结束,再判断表达式2决定是否进入下一次循环。2.就算条件不成立,do...while也会先执行一边循环体再进行条件判断,但是相同条件相同步长的情况下,do...while和while两个循环次数相同。c.循环变量步长的省略。
2025-07-08 20:57:02
877
原创 2025 0707作业
b.逻辑:if条件满足时,运行{}内的语句块,否则查看条件二,若满足则运行else if{}内的语句块,若条件二也不满足,则执行else{}内的语句块(可以添加多个else if)。b.逻辑:先判断条件一,符合则判断条件二,符合则输出条件二{}内的语句块,否则输出条件二下的else{}内的语句块,若不符合条件一,则输出else{}内的语句块。a.是对()中的值进行判断,与哪个case后面的值相等,就运行该case的语句块。b.逻辑:当if条件成立时执行{}内的语句块,否则执行else{}里面的语句块。
2025-07-07 20:13:52
386
原创 0705自习
宏定义中 ##是连接字符串的作用,name##_##type##_type 语句的含义是“name“ + ”_” + “type” + “_type”,然后替换之后为“val“ + ”_” + “int” + “_type”,故选A。f(&b,a)的作用是将b的地址和a的值赋到f()里,在f()里*c = *c + 1,令b的地址+1,使b由‘a’变为’b’。++ 的优先级比 *的优先级高,所以先执行++,所以应该是p[1],而不是p[0]++,但是是后自增,所以输出p[0],12。
2025-07-05 17:17:00
643
原创 2025 0704作业
将a的第6个bit位置1,将a的第2个bit位取反(bit位默认从第0位开始)运算过程:有两个有两个即以上运算时,先从右往左运算,++a令a变为7,然后a++输出的时自增前的值,所以输出7,然后将a++自增后的值赋给第二个%d输出。运算过程:一样先计算a++,但是输出的是自增前的数,所以第二个%d输出为6,经过a++后付给++a的a值为7,所以++a输出8。a:b(输入Max(a,b)可比较a,b的大小)= a!== a==b a,b相等为真否则为假。
2025-07-04 22:06:15
1038
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅