
C语言
知无止境
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言指针数组和数组指针
c语言指针数组和数组指针原创 2023-01-03 10:45:55 · 212 阅读 · 0 评论 -
c语言数据类型取值范围
一、CPU位数和数据类型在嵌入式开发中,不同数据类型的位数和取值范围由CPU的位数决定,我们可以通过sizeof关键词计算出每一种数据类型的范围。嵌入式开发中熟练掌握各数据类型的取值范围是很有必要的,尤其在长期运行的设备中。比如我们定义了一个int类型的数据,它的正向最大取值为2147483647,换算成天数:2147483647/1000/3600/24,大约是24.85天,如果你定义了一个每隔1ms加一的变量,那么这个值最多只能用24天,超过24天之后这个计数值就会出现基数问题,从而导bug的产生。原创 2020-12-29 15:37:59 · 5237 阅读 · 0 评论 -
c语言排序算法(冒泡排序和选择排序)
一、冒泡排序1.1、冒泡排序的基本原理依次比较相邻的两个数,将较大(小)的数和相邻的数交换位置。1.2、具体算法假设有一个n个元素的整型数组a,需要从小到大排序首先我们拿a[0]和a[1]进行比较,如果a[0]大于a[1],则将a[0]和a[1]交换位置; 紧接着比较a[1]和a[2],如果a[1]大于a[2],则将a[1]和a[2]交换位置,依次类推,一轮比较之后可以将最大的值放到数组最后的位置;2.接下来对a[0]到a[n-1]执行上述操作,将最大值放到a[n-2]的位置;依次类推,直到原创 2020-12-05 15:58:12 · 1952 阅读 · 0 评论 -
c语言主机字节序和网络字节序
一、什么是字节序字节序是指多字节数据在计算机内存中存储顺序,或者网络传输时各字节的传输顺序,字节序分为大端序和小端序。大端序:高字节存储在低位地址,传输数据时高位在前;小端序:高字节存储在高位地址,传输数据时高位在后;假设0x4001-0x4004地址中存储有一个整型变量0x12345678,它在大端和小端mcu中的存储方式如下:地址大端存储小端存储0x40040x780x120x40030x560x340x40020x340x560x400原创 2020-11-16 13:48:51 · 1536 阅读 · 0 评论 -
Lwip协议netif结构体详解
一、概述struct netif结构体是lwip协议中非常重要的一个数据结构,每一个网卡都对应一个唯一的netif结构体,当软件中启动dhcp成功获取到ip地址之后,网卡的ip地址、子网掩码、网关地址等信息就会存储到这个netif结构体中,我们可以通过访问这个结构体来获取我们需要得到的信息。lwip允许设允许存在多个网卡,所以netif通常会存储在一个链表中,以支持多个网卡的设备。lwip不仅支持ipv4,而且支持ipv6,这里我们仅讨论ipv4.netif结构体的原型如下(基于lwip2.1.2)原创 2020-10-21 21:32:48 · 3351 阅读 · 0 评论 -
linux文件系统中i节点和stat函数/命令
一、概述unix系统中,每打开一个文件,内核会使用三种数据结构来表示这个文件:进程表、v节点和i节点。linux只保留了unix中的i节点来维护打开的文件;二、i节点和struct stat结构体linux的i节点信息存储在struct stat结构体中,可以通过man 2 stat来查看这个结构体的内容,如下: struct stat { dev_t st_dev; /* ID of device containing fil原创 2020-10-11 10:49:51 · 1087 阅读 · 2 评论 -
linux文件类型详解
一、简述linux下一切都是文件,目录也是文件的一种分类。文件类型可以通过ls -l命令查看,属性的第一个字符指明了这个文件的类型,如下:每一行最左边的第一个字符表示文件的类型,对应的含义为:-普通文件b块设备文件c字符设备文件d目录文件p管道文件l链接文件2.1、普通文件在linux下以“-”标明的文件表示普通文件,如我们常见的以.txt、.bin、.c结尾的文件都是普通文件;普通文件通常用touch命令创建,如我们在桌面上创建一个text.c文件并查看它的属性:2.2原创 2020-09-27 10:55:39 · 1164 阅读 · 0 评论 -
c语言数据结构(双向链表)
一、双向链表概述双向链表和单向链表的区别之处在于,双向链表的不仅可以从头部向尾部遍历,也可以从尾部向头部遍历,它的基本结构如下:双向链表的每一个元素都包含两个指针,其中一个指针指向链表的上一个节点,另外一个指针指向链表的下一个节点;二、双向链表的基本操作2.1、从链表尾部的插入节点第一步:Node-C的指向下一个节点的指针指向Node-D;第二步:Node-D的指向上一个节点的指针指向Node-C;第三步:Node-D指向下一个节点的指针指向NULL,这点很重要,因为NULL原创 2020-09-14 14:08:50 · 531 阅读 · 0 评论 -
c语言数据结构(单向链表)
一、链表简述链表是c语言常用的一种数据结构,和队列不同的是,链表中存储的数据类型更加多样化,可以是数组、指针或者多种数据类型组合而成的结构体。链表需要一个链表头记录整个链表的起点,之后的节点可以根据链表头进行查找。二、链表基本操作2.1、链表创建在使用链表前需要创建一个存储链表数据的结构体结构体中的数据可以是一个数组、指针或者用户自定义的结构体等。typedef struct _listnode{ struct _listnode *next; char filename[128原创 2020-09-13 10:29:45 · 339 阅读 · 0 评论 -
C语言数据结构(环形缓冲区)
一、什么是环形缓冲区环形缓冲区本质上也是环形队列,和环形对列不同的是,环形缓冲区允许用户一次性写入和读取多个队列元素;二、对环形缓冲区的简单理解我们可以把环形缓冲区想象成一个蓄水池,它有一个入水口和出水口,如果入水的速度大于出水的速度,在一段时间后蓄水池就会存满水,这时即使关闭入水口,出水口还是会源源不断的有水流出。图片来源于百度图片二、环形缓冲区的应用环形缓冲区通常应用于具有生产者和消费者的场景,比如我们需要实现一首音乐的在线播放,假设一首音乐的大小为5M,在带宽充足的情况下下载完原创 2020-09-11 09:17:55 · 2457 阅读 · 1 评论 -
c语言数据结构(环形队列)
一、什么是队列队列是一种先进先出的线性表;可进行插入的一端称为队尾(rear),可进行删除的一端称为队首(front);从队列中删除元素称为出队(pop queue),向队列中插入元素称为入队(push queue);二、环形队列将顺序队列首尾相连就构成了环形队列;环形队列具有固定的元素个数,它使用两个变量分别指向队首和队尾,入队时指向队首变量加一,出队时指向队尾的变量加一,使用队首变量和队尾变量的差值表示队列中实际元素的个数;三、队列基本操作3.1、队列初始化int RingQu原创 2020-09-09 10:49:37 · 4074 阅读 · 3 评论