- 博客(53)
- 收藏
- 关注
原创 嵌入式初学-C语言-数据结构--六
树是一种非线性结构,其严格的数学定义是:如果一组数据中除了第一个节点(第一个节点称为根节 点,没有直接前驱节点)之外,其余任意节点有且仅有一个直接前驱,有零个或多个直接后继,这样 的一组数据形成一棵树。这种特性简称为一对多的逻辑关系。即用于描述具有层次关系,类似组织架 构关系的一种数据结构。树的组成:根,分支,叶子。
2024-09-10 19:19:21 879
原创 嵌入式初学-C语言-数据结构--五
队列是最常见的概念,日常生活经常需要排队,仔细观察队列会发现,队列是一种逻辑结构,是一种 特殊的线性表。特殊在:只能在固定的两端操作线性表 只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进先出”的逻辑,这种逻辑就被称为队列。由于约定了只能在线性表固定的两端进行操作,于是给队列这种特殊的线性表的插入删除,起个特殊 的名称:队头:可以删除节点的一端队尾:可以插入节点的一端入队:将节点插入到队尾之后,函数名通常为enQueue()出队:将队头节点从队列中剔除,函数名通常为outQueue()
2024-09-09 19:09:26 1004
原创 嵌入式初学-C语言-数据结构--四
栈是一种逻辑结构,是特殊的线性表。特殊在:只能在固定的一端操作只要满足上述条件,那么这种特殊的线性表就会呈现一种“后进先出”的逻辑,这种逻辑就被称为栈。栈 在生活中到处可见,比如堆叠的盘子、电梯中的人们、嵌套函数的参数等等。由于约定了只能在线性表固定的一端进行操作,于是给栈这种特殊的线性表的“插入”、“删除”,另起了 下面这些特定的名称:栈顶:可以进行插入删除的一端栈底:栈顶的对端入栈:将节点插入栈顶之上,也称为压栈,函数名通常为push()
2024-09-06 15:06:09 602
原创 嵌入式初学-C语言-数据结构--三
对链表而言,双向均可遍历是最方便的,另外首尾相连循环遍历也可大大增加链表操作的便捷性。因 此,双向循环链表,是在实际运用中是最常见的链表形态。
2024-08-29 20:18:16 683
原创 嵌入式初学-C语言-数据结构--一
顺序存储中,由于逻辑关系是用物理位置来表达的,因此从上述示例代码可以很清楚看到,增删数据 都非常困难,需要成片地移动数据。顺序表对数据节点的增删操作是很不友好的。总结其特点如下:优点1. 不需要多余的信息来记录数据间的关系,存储密度高2. 所有数据顺序存储在一片连续的内存中,支持立即访问任意一个随机数据,比如上述顺序表中第 个节点是 s->data[i]缺点1. 插入、删除时需要保持数据的物理位置反映其逻辑关系,一般需要成片移动数据2. 当数据节点数量较多时,需要一整片较大的连续内存空间。
2024-08-27 20:07:07 1387
原创 嵌入式初学-C语言-二九
预处理就是在源文件(如.c文件)编译之前,所进行的一部分预备操作,这部分操作是由预处理程序自动完成,当源文件在编译时,编译器会自动调用预处理指令的解析,预处理指令解析完成才能进入下一步的编译过程为了能够方便看到编译细节,使用以下命令gcc 源文件 -E -o 程序名[.后缀]fine命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。可以用#undef命令终止宏定义的作用域。
2024-08-22 19:32:36 1010
原创 嵌入式初学-C语言-二八
单字符写入函数名:fputc头文件: #include 函数原型: int fputc(int c,FILE* fp)函数功能:向fp代表的文件中写入一个字符c
2024-08-21 14:54:37 1046
原创 嵌入式初学-C语言-二六
比如:需要管理一个学生对象,只需要定义一个 struct student majie{…};假如:需要管理多个学生对象,此时就需要一个结构体数组,struct student students[64]第一种:先定义结构体类型,然后定义结构体变量,再将变量存储到结构体数组中定义结构体类型,然后定义结构体数组并初始化第三种:定义结构体类型同时定义数组并初始化第四种:定义结构体类型同时定义结构体数组,然后通过索引给结构体成员赋值结构体数组名访问结构体成员:2.格式:结构体数组名 ->成员名。
2024-08-19 20:45:49 1090
原创 嵌入式初学-C语言-二五
结构体便改良也成为结构体实例第一种:先定义结构体然后使用(ctruct结构体名 变量名)第二种:在定义结构体的同时定义结构体变量此时定义了一个结构体A,x,y是这个结构体类型的变量第三种:在定义匿名结构体的同时,定义结构体变量说明:此时定义了一个没有名字的结构体(匿名结构体),x,y是匿名结构体类型的变量匿名结构体:弊大于利(尽量少用)优点:少写一个结构体名称缺点:只能使用一次;定义的结构体类型的同时必须定义变量当我们结构体的类型只需要使用一次,并且定义类型的同时定义变量。
2024-08-18 20:51:41 1167
原创 嵌入式初学-C语言-二三
main函数有多种定义格式,main函数也是函数,函数相关的结论,对main函数也有效(也可以定义main函数的函数指针)
2024-08-14 20:46:31 1075
原创 嵌入式初学-C语言-二二
函数指针本质是指针,他是函数的指针(定义一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。返回值类型(*变量名)(形式参数列表);举例:本质是函数,这个函数的返回值类型是指针,这个函数称为之指针函数在C语言中,一个函数不仅可以返回整型、字符型、实型等值,也可以返回指针类型的值,即C语言中还允许定义返回指针值的函数,访问了一个已经销毁或者访问受限的内存区域外的指针,这个指针就被称为野指针。
2024-08-13 20:36:14 835
原创 嵌入式初学-C语言-二一
特点: 先有数组,后有指针 它指向的是一个完整的数组。概念:指针数组是一个数组,数组中的每一个元素都是一个指针。注意:字符数组和字符指针变量都能实现字符串的存储与运算。指针和数组中符号优先级: () > [] > *数据类型 (*指针变量名)[容量];数据类型 (*指针变量名)[容量];概念:数组指针是指向数组的指针。建议:指针数组我们一般用来处理字符串。语法:数据类型 *数据名[]
2024-08-12 22:34:31 950
原创 嵌入式初学-C语言-练习六
要求:有菜单函数 和加、减、乘、除的函数 主函数调用这些函数实现程序的功能.要求菜单函数能 够输出如下的界面。1、加法 2、减法 3、乘法 4、除法 0.退出‘
2024-08-11 16:41:07 430
原创 嵌入式初学-C语言-二十
注意:虽然我们定义了一个指针变量接收了数组地址,但不能理解为指针变量指向了数组,而应该理 解为指向了数组的元素。在C语言中,由于数组名代表数组的首地址,因此,数组名实际上也是指针。数组中第一个元素的地址,也就是数组的首地址。用来存放数组元素地址的数组,称之为指针数组。指针运算:指针变量必须要指向数组中的某个元素。自增:p++,++p,p=p+1(p+=1)自减:p--,--p,p=p-1(p-=1)让指针变量指向下一个元素。让指针变量指向上一个元素。前面的指针小于后面的指针。指针相减:p1-p2。
2024-08-10 21:43:15 779
原创 嵌入式初学-C语言-十九
内存地址:系统为了内存管理的方便将内存划分为一个个内存单元(一个内存单元占一个字节),并为每一个内存单元进行了编号,内存单元的编号称为该内存单元的地址。一般情况下,我们每一个变量都是有多个内存单元构成的,所以每个变量的内存地址其实就是这个变量对应的第一个单元的地址,也叫首地址变量指针变量地址称为该变量的指针,变量地址往往是指变量在内存中第一个内存单元的编号(首地址)指针变量存放其他变量地址的变量语法:数据类型 * 变量列表举例:int a;// 普通变量int *a,*b;// 指针变量。
2024-08-09 22:56:54 629
原创 嵌入式初学-C语言-十六
函数定义时,指定的参数,形参是用来接收数据的,函数定义时,系统不会为形参申请内存,只有当函数调用时,系统才会为形参申请内存,用于存储实际参数,并且当函数返回,系统会自动回收,为形参申请的内存资源(本质上所有函数都有return返回,只不过当我们的函数返回类型是void的时候,return关键字被省略了)③ 若使用用户定义的函数,而用户函数又在主调函数的后面,则应在主调函数中对被调用的函数进行声明。1. 函数调用时,主调函数传递的数据参数(常量,变量,表达式,只要有确定的值),实参是传递的数据。
2024-08-06 22:21:59 1108
原创 嵌入式初学-C语言-十五
函数:实现一定功能的,独立的代码模块,我们的函数一定是先定义后使用使用函数的优势可以通过函数提供功能给别人使用,当然我们也可以使用别人提供的函数,减少代码量借助函数可以减少重复性代码。实现结构化(模块化)程序设计思想结构化程序设计思想:将大型的任务功能,划分为相互独立的小型的任务模块来设计3.函数是c语言程序的基本组成单元:C语言程序是由一个(必然是main函数)或多个函数组成。语法:返回类型 函数名(形参列表) -- 函数头 | 函数首部。
2024-08-05 20:49:33 697
原创 嵌入式初学-C语言-十四
字符数组:元素类型为char字符型的数组,字符数组往往是用来存储字符串数据的。需要注意的一点是,我们C语 言中的字符是字节字符。
2024-08-04 22:05:24 964
原创 嵌入式初学-C语言-十三
二维数组本质上是一个行列式的组合,也就是说二维数组是有行和列两部分构成。二维数组数据是通 过行列进行解读。二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个一维数组,只不过它的元素是一维 数组。
2024-08-04 18:18:41 306
原创 嵌入式初学-C语言-练习三
1 /*2 计算 1+1/(2*3)+1/(3*4)+...+1/(n*(n+1))=?直到最后一相值小于0.00001为至。
2024-08-03 21:50:39 1519
原创 嵌入式初学-C语言-十二
类型说明符 数组名[数组容量]说明:数组的类型说明符由数组中的元素来决定,也就是元素是什么类型,数组就是什么类型数组名也是标识符, 我们所说的数组(名),大家可以理解为数据类型是数组的变量(名)。数组容量也可以叫做常量表达式,举例: int ages[10]、int lcd[1024*768]类型:代表了数组中元素的类型容量:数组中能存储多少个元素,数组容量可以是一个常量、常量表达式,还可以是符号常量,但必 须是整型。深入理解:定义一个数组,相当于申请了一个可以容纳所指定元素数量的内存单元。
2024-08-03 21:32:10 1233
原创 嵌入式初学-C语言-十一
break功能:1. 用在switch中,用来跳出switch的case语句;如果case没有break,可能会产生case穿透。2. 用在循环中(while、do..while、for..),提前结束循环,也就是跳出整个循环。
2024-08-02 22:43:21 553
原创 嵌入式初学-C语言-六
我们从磁盘里读取信息,先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓 冲区的数据取完后再去磁盘中读取,这样就减少磁盘的读写次数,再加上计算机对缓冲区的操作大大 快于磁盘的操作,故应用缓冲区可大大提高计算机的运行速度
2024-07-27 17:49:15 852
原创 嵌入式初学-C语言-五
⑴ 控制语句 用于完成一定的控制功能⑤ continue⑥ break⑧ return⑨ goto 标号 (无条件跳转语句)说明:“( ) ”中是一个判断条件, “……”表示内嵌的语句。⑵ 函数调用语句 由一个函数调用加一个分号构成,例如:⑶ 表达式语句 由一个表达式加一个分号构成,最典型的是赋值语句,例如:a=3 是一个表达式a=3;是一个表达式语句⑷ 空语句 只有一个分号,什么都不做,例如:;
2024-07-26 20:34:41 1357
原创 嵌入式初学-C语言-四
说明:按位(bit)来进行运算操作的运算符语法: ~(按位取反) &(按位与) |(按位或) ^(按位异或) (右移)
2024-07-26 16:51:50 919 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人