- 博客(34)
- 收藏
- 关注
原创 带缓存的文件创建函数
1. fopen函数的作用: 打开文件函数的原型: FILE *fopen(const char *pth, const char *mode) mode: r:读,文件必须存在; r+:打开可读写,文件必须存在; w:打开只写文件,文件不存在就会创建文件; 文件清0; w+:打开可读写的文件, a:附加的形式打开只写文件,不
2016-12-22 22:27:29
317
原创 文件的创建 读取 写入知识点
1.creat函数的作用: 创建一个文件;函数的原型: int creat(const char *pathname, mode_t mode);头文件: #include #include #include 返回值:成功:新的文件描述符;出错: -12. open函数的作用:打开一个文件;函数的原型:int open(const
2016-12-21 21:38:40
431
原创 消息队列函数知识点
(1)msgget头文件:#include #include #include 函数的作用: 创建打开消息队列; 函数的原型: int msgget(key_t key, int msgflg) 参数: key:键值;IPC_PRIVATE私有的;msgflg:权限; 返回值:成功返回消息队列ID;出错-1;(2)msgsnd,
2016-12-20 21:38:31
375
原创 共享内存函数知识
(1)shmget:头文件:#include #include 作用:创建共享内存原型:int shmget (key_t key,int size, intshmflg);参数:key:键值,可以为0 也可以为IPC_PRIVATE 新的共享内存。size:内存大小;返回值:成功返回共享内存的标识符;失败返回 -1。(2)shmat
2016-12-19 21:29:17
541
原创 进程的基础知识点
进程的定义:进程是一个具有一定独立功能的程序的一次运行活动。同时也是资源分配的最先单元程序是放在磁盘的可执行文件。是静态的,长久的。进程是程序运行的实例,是动态的,暂时的。进程的组成包括:数据,进程控制块(即是进程的状态信息)进程与程序的对应关系:通过多次执行,一个程序可对应多个进程。通过调用关系,一个进程课包括多个程序。进程的生命周期:创建
2016-12-17 21:44:24
427
转载 队列的链式存储结构及实现
队列的链式存储结构及实现队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们简称为链队列。 typedef intQElemType; /*QElemType类型根据实际情况而定,int*/ typedef structQNode /*结点结构*/{ QElemType data;
2016-12-14 22:10:43
523
转载 循环队列
循环队列定义把队列的这种头尾相接的顺序存储结构称为循环队列。typedef int QElemType; /*QElemType 类型根据实际情况而定,这里假设为int*//*循环队列的顺序存储结构*/typedef struct{QElemType data[MAXSIZE];int front; /*头指针*/int rear; /*尾指针
2016-12-12 22:22:03
576
转载 栈的作用
栈的作用栈的引入简化了程序设计的问题,使得思考范围缩小,更加聚焦于我们要解决的问题核心。 队列的定义队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。队列的抽象数据模型InitQueue(*Q): 初始化操作,建立一个空队列QDestroy
2016-12-11 21:28:05
971
转载 栈的进栈和出栈
栈的顺序存储结构---进栈操作 /*插入元素e为新的栈顶元素*/StatusPush(SqStack *S, SElemType e){if(S->top == MAXSIZE -1) /栈满**/ {return ERROR;} s->top++; /*栈顶指针增加一*/
2016-12-10 23:06:32
737
转载 栈的基础知识
栈栈是限定在表尾进行插入和删除操作的线性表;队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表。LIFO。栈的插入操作,叫做进栈,也称为压栈,入栈。子弹入弹夹;栈的删除操作,叫做出栈,也有的叫做弹栈。栈的抽象数据类型
2016-12-09 23:13:20
405
转载 单链表的整表删除
单链表的整表删除其实就是在内存中将它释放掉,以便于留出空间给其他程序或软件使用;算法思路:声明一个结点p和q;将第一个结点赋值给p;循环:将下一个结点赋值给p;释放p;将q赋值给p。 q变量有没有存在的必要?如果直接写free(p); p=p->next会带来什么问题?
2016-12-08 22:35:06
301
转载 单链表的整表创建
单链表的整表创建顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和大小的数组并赋值的过程。所以,创建单链表的过程是动态生成链表的过程。即从“空表”的初始状态起,依次建立各元素结点。并逐个插入链表。单链表整表创建的算法思路:声明一结点p和计数器变量i;初始化一空链表L;让L的头结点的指针指向NULL,即建立一个带头结点的单链表;
2016-12-07 22:45:03
344
转载 单链表的插入和删除
单链表的插入与删除 单链表的插入单链表第i个数据插入结点的算法思路:1. 声明一个结点p指向第一个结点,初始化j从1开始;2. 当j时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;3. 若到链表末尾p为空,则说明第i个元素不存在;4. 否则查找成功,在系统中生成一个空结点s;5
2016-12-06 23:09:02
840
1
转载 单链表的读取
单链表的读取获取链表第i个数据的算法思路:声明一个结点p指向链表第一个结点,初始化j从1开始;当j时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;若到链表末尾p为空,则说明第i个元素不存在;否则查找成功,返回结点p的数据;typedef struct Node{ElemTypedata;structNode *next;}
2016-12-05 22:02:10
912
转载 线性表的链式存储结构
线性表的链式存储结构顺序存储结构不足的解决办法缺点:最大的缺点就是插入和删除时需要移动大量元素。为了表示每个数据元素ai与其直接后续数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后续的信息。我们把存储数据元素信息的域称为数据域,把存储直接后续位置的域称为指针域。指针域中存储的信息称作指针或域,这两部分信息组成数据元素ai的存
2016-12-04 22:53:25
219
转载 线性表删除
删除操作删除算法的思路:1. 如果删除位置不合理,抛出异常;2. 取出删除元素;3. 从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;4. 表长-1; /*初始条件:顺序线性表L已存在,1《i《ListLength(L))*//*操作结果:删除L中第i个数据元素,并用
2016-12-03 23:13:55
405
转载 线性表插入
3.5.2插入操作插入算法的思路:1. 如果插入位置不合理,抛出异常;2. 如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;3. 从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;4. 将要插入元素填入位置i处;5. 表长加1 /*初始条件:顺序线性表L
2016-12-02 23:42:13
785
1
转载 顺序储存结构
顺序存储结构的插入与删除获得元素操作将线性表L中的第i个位置元素值返回,在数组下标范围内,就是把数组第i-1下标的值返回即可。#define OK 1#defineERROR 0#defineTRUE 1#defineFALSE 0typedef int Status;/*Status 是函数的类型,其值是函数结果状态代码,如OK等*//
2016-12-01 23:06:38
553
转载 线性表的基础知识
数据长度与线性表长度区别数组的长度是存放线性表的存储空间的长度存储分配后这个量是一般是不变的。线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。在任意时刻,线性表的长度应该小于等于数组的的长度。 地址计算方法线性表起始是1,c中数组从0开始。线性表的第i个元素是要存储在数组下标为i-1的位置。存储器
2016-11-30 22:25:06
440
转载 线性表—and—顺序存储
复杂的线性表操作:如两个线性表集合A和B的并集操作。即要使的集合A=AUB。说白了,就是把集合B中并不存在A中的数据元素插入到A中即可。La表示集合A,Lb表示集合B。 Void union(List*La, List Lb){ Int La_len, Lb_len, I; ElemType e;
2016-11-29 22:42:21
204
转载 线性表
线性表的定义线性表(List):零个或多个数据元素的有序序列。首先,它是一个序列。元素之间是有顺序的,若元素存在多个,第一个元素无前驱,最后一个元素无后继。若将线性表记为(a1,…..,ai-1,ai, ai+1,......,an),则表中ai-1领先ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,2,…,n-1时,ai有且仅有一个直接后继,当i
2016-11-28 20:17:11
189
原创 宏定义——#define
宏定义是由源程序中宏定义命令完成的。宏替换是由预处理程序自动完成的。宏定义分为有参数和无参数两种。无参数宏定义:无参宏定义的宏名后不带参数,其定义的一般形式为:#define 标识符 字符串 例:#define MAX_SIZE 100#表示这是一条预处理命令;define为宏定义命令,标识符为所定义的宏名;字符串 可以是常数,表达式,格式串等。常对程序中反
2016-11-26 22:15:12
685
原创 关键字的作用——const和volatile
const的作用:修饰的变量,(const离谁近谁不能自增)。即是不能用该变量名修改这个变量所表示的内存空间的值。(把一个变量变成一个只读变量)。例:const int num = 5;num++; 这个语句不对,无法实现num+1=6。int *p;p=#(*p)++; 这样可以改变num的值。最终num=6;修饰函数:例:const
2016-11-25 21:58:47
465
原创 关键字的作用——register 和 static
register的作用:register修饰的变量,将该变量尽可能存放在CPU中的寄存器中。可省去CPU从内存抓取数据的时间,提高了运行效率。register使用时注意事项:(1):只能修饰局部变量,不能修饰全局变量。不能修饰函数。(2):不能再用取地址抓取这个变量。(register修饰的变量,是将变量保存在CPU的寄存器中,而不在内存中,只有内存中才能取地址
2016-11-24 21:44:51
688
原创 函数的知识点
函数:由函数名,形参,返回值构成函数的调用:(1):通过函数名找到函数的入口地址。(函数名是一个指针常量,保存着函数的地址)。(2):给形参分配空间。(3):传值:把实参变量对应的内存空间的值,传递给形参变量的对应空间。当只读(只是用不修改),实参变量的值时,传实参变量名。当写(既使用也修改)实参变量对应的内存空间的值时,传实参变量对应空间的地址。(4):执
2016-11-23 20:58:26
297
原创 系统函数的应用——malloc realloc calloc函数
malloc函数:语法:指针名=(数据类型 *)malloc((长度)) 。(数据类型 *) 表示指针例:a[3]=(int *)malloc(sizeof(int)*100)malloc是C语言中动态储存管理的一组标准库函数之一,其作用是在内存的动态存储区域中分配一个长度为size*100的连续空间,其参数是一个无符号整型数,返回值是一个指向所分配的连续储存域的起始地址的指针。
2016-11-22 22:07:43
394
原创 数组的知识点
数组名:是一个指针常量,地址是保存数组首元素的地址,不能自加。对一维数组地址取值等于该数组首元素的地址,对数组名取地址等于数组的地址。二维数组:不能省略列,可以省略行。二维数组名:是一个指针常量,地址是保存首个一维数组的地址。*(*(a+i)+j):a+i:第i+1个一维数组的地址,*(a+i):第i+1个一维数组的首元素的地址。
2016-11-21 22:21:02
301
原创 指针的知识要点
(*p):找到p变量里保存的地址对应的内存空间。(1):对应的内存空间。(2)指向的内存空间。(3)指针的步长(有指向的类型决定步长)p:对应的指向内存空间的地址存储在p对应的内存空间。*p:对应指向内存空间的值p++:对p 对应的内存空间的值加1.(*p)++:对p指向的内存空间里的值加1.例如:int num = 5; num对应的内存空间的地址为0x1
2016-11-14 21:41:10
361
原创 嵌入式调试器---GDB
一:GDB的概述:GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。二:GDB的四个方面的功能:(1):启动你的程序,可以按照自己定义的要求随心所欲的运行程序,进行程序调试。(2):可以让被调试的程序在你所指定的的调试的断点处停住。(断点可以是条件表达式)(3):当程序被停住时,可以检查此时程序所发生的事。(4):动态的改变你程序的执行环境。
2016-11-11 20:48:08
345
原创 C语言的基础知识解答
C语言的特点:(1):具有语言简洁,紧凑的语法机制,使用灵活方便。(2):运算符丰富。(3)数据类型丰富(4)具有结构化的控制语句,(5)语法限制不太严格,程序设计自由大(6)生成目标代码质量高,程序执行效率高。(7)用C语言编写的程序可移植性好(8)能够直接访问硬件。可移植性:是指代码从一个平台切换到另一个平台运行,代码的修改量修改的越少越好,这样的代码才有好的可移植性。
2016-11-10 16:22:41
266
原创 C语言的知识详解
无符号数和有符号数如何进行比较:有符号数会先进行隐式转换成无符号数(即是底层的补码不变,但是此数从有符号数转换成了无符号数) 例如:int类型的数据与unsigned int 类型的数据进行比较时,会把int类型的数据转换为unsigned int 类型的数据,然后再进行比较, int data = 1; 与unsigned int
2016-11-07 19:27:11
254
原创 linux基础操作系统
Linux操作系统的发展Linux操作系统的创始人:林纳斯·托瓦兹Linux是一套免费试用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件,应用程序和网络协议。它支持32位和64位硬件。继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2016-11-04 13:29:12
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人