- 博客(15)
- 收藏
- 关注
原创 如何通过链接器脚本开辟空间
定义了两个特殊的符号__initcall_start和__initcall_end,它们定义了初始化调用段的开始和结束位置。.text.init段,这段代码是程序初始化时执行的代码。*(.text.init)表示把所有的.text.init输入段都放在这里。.text,.data和.bss段,这些是常见的代码段、数据段和未初始化数据段。,提供一个名为_end的全局符号,表示文件的结束地址。.data.init段,这是程序初始化时使用的数据段。.data.init_task段,这个段包含了初始化任务的数据。
2023-09-16 21:04:27
203
1
原创 Linux下实现聊天室
1.使用epoll监听套间字,使用epoll监听客户端是否有读操作,如果有读操作,就将该套间字从监听红黑树摘下,然后读取客户端发送的要执行的操作,将操作放入线程池队列中执行,等操作执行完再将套间字放到监听红黑树上。2.聊天的时候创建一个新线程,一个线程专门用来发送消息,一个线程专门用来读取消息。聊天结束后读取的线程自动销毁。1.使用两个线程,一个线程从服务器读取数据,实现弹窗功能,即有人添加好友或有人发送消息会有一个消息提示。4.使用nlohmann/json序列化和反序列化。2.ET边沿触发模式。...
2022-08-04 20:21:31
2564
2
原创 字符串和相关操作
第一个字符不存数据,存储字符串的长度main函数和声明# include <string.h># include <stdio.h> # include <stdlib.h> # include <stdbool.h>#define MAXSIZE 40 /* 存储空间初始分配量 */typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */typedef char Strin
2022-01-22 21:21:51
447
1
原创 栈顺序存储
栈先进后出,类似一个杯子,栈是限定仅在表尾进行插入和删除操作的线性表,top是栈顶元素的下标,允许插入的一端为栈顶,允许删除的一端为栈底。栈存在一个元素时top为0,所以空栈定义top为1头文件和栈的结构定义# include <stdio.h># include <stdlib.h># include <stdbool.h># define MAXSIZE 20typedef int SElemType;typedef struct{ .
2021-12-27 12:41:58
621
原创 静态链表及相关函数
静态链表:用数组描述的链表静态链表的节点分为两部分,数据域和游标,游标保存下一个元素的下标,相当于链表的指针域,每次通过游标找到下一个元素。静态链表第一个元素和最后一个元素特殊处理不存数据(非有效元素),静态链表的第一个元素的游标保存备用链表第一个元素的下标(备用链表就是没有用到的元素,在插入时使用备用链表),最后一个元素的游标保存数组第一个有效元素的下标(静态链表空时为0,否则不是0,因为首元素不是有效元素),最后一个有效元素的游标为0。代码作用有详细注释main函数和相关头文件,及其相关函数.
2021-12-24 18:48:26
497
1
原创 线性带头单链表
1.头文件,线性表的结点类型创建,还有main函数,及其对线性表进行操作的相关函数声明# include <stdio.h># include <stdlib.h># include <stdbool.h># include <time.h>typedef int ElemType;typedef struct{ ElemType data; struct Node *next;}Node;typedef Node * L
2021-12-21 21:11:15
428
原创 线性表及其相关函数
头文件,及其相关函数声明,宏定义和typedef起别名使用typedef可以实现随时对线性表保存的内容的类型进行更改,只需要将typedef int ElemType; 中的int改为别的类型即可,方便简介线性表的大小在使用过程中无法动态改变,所以需要定义的大一些,只有前length个用来存数据,后面的未使用的元素是为了在对其添加的时候保证线性表不会满,可以进行添加# include <stdio.h># include <stdbool.h># include <s
2021-12-16 20:52:11
1159
原创 位运算符及位字段
1.位运算符按位取反~将所有二进制位按位取反例如:0000 0000 0000 1101按位取反:1111 1111 1111 00102.按位与&两个数的二进制位都为1,则相与后为1,否则为0(1111 0000 1111 0000) & (0101 1010 0101 1101)结果:0101 0000 0101 00003.按位或|两个数二进制位有一个为1,则为1,否则为0(0101 1010 0101 1010) | (1010 0101 1010 0101)
2021-12-15 18:48:05
504
1
原创 文件操作函数
1.什么是文件文件通常是在磁盘或固定硬盘上的一段已命名存储区文件内容有文本文件,和二进制文件,文本文件是直接将字符串写入文件或从文件中读取字符串,二进制是以二进制模式写入文件,并以二进制模式读取文件12345通过文本哦是写入就是字符串12345,通过二进制写入就是12345的二进制在程序设计中,一般谈的文件分为程序文件和数据文件2.文件操作函数FILE *是一个文件指针,FILE是一个结构体类型,包含了文件的一些信息,通过文件指针可以找到文件的地址,对文件进行操作1.FILE * fope
2021-12-15 13:27:23
1273
1
原创 字符串函数
1.gets(char *);读取整行,遇到换行结束,丢弃换行符,然后末尾添加’\0’读到文件结尾会返回空指针(NULL)gets()只知道开始,不知道共多少个字符,可能会超出范围,导致缓冲区溢出,即多余字符超出指定空间大小2.puts(char *);将字符数组输出或将字符指针指向的字符串常量输出输出字符串,并在末尾添加换行,与gets()配对使用,并在末尾自动换行3.fgets(char *, int n, stdin/FILE *);读入字符串,遇到换行或读到n-1个字符结束,
2021-12-14 22:57:21
571
原创 西邮Linux2019-2021年面试题
2019面试题打印无穷个=,死循环因为无符号整形一定大于等于0,所以判断条件恒成立c2.下列三种交换整数的方式是如何实现交换的?/* (1) */ int c = a; a = b ; b = c;/* (2) */ a = a - b; b = b + a; a = b - a;/* (3) */ a ^= b ; b ^= a ; a ^= b;...
2021-12-08 19:38:37
451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人