
C-base
文章平均质量分 64
pl0020
这个作者很懒,什么都没留下…
展开
-
C指针传参的一些思考
无意中看到了一段关于函数传参的例程,就总结了实际开发中常用到的几种传参处理方式,原创 2022-11-15 15:18:54 · 1001 阅读 · 0 评论 -
使用CJSON 解析JSON 结构体数组【典型】
一、CJSON数据结构定义#define cJSON_False 0#define cJSON_True 1#define cJSON_NULL 2#define cJSON_Number 3#define cJSON_String 4#define cJSON_Array 5 //数组#define cJSON_Object 6 //对象or键名typedef struct cJSON { struct cJSON *next,*prev; /*遍历数组或对象链的前向原创 2021-11-20 19:46:37 · 22274 阅读 · 2 评论 -
调度器锁rt_enter_critical() & rt_exit_critical()
一、函数说明void rt_enter_critical(void); /* 进入临界区*/调用这个函数后,调度器将被上锁。在系统锁住调度器的期间,系统依然响应中断,如果中断唤醒了的更高优先级线程,调度器并不会立刻执行它,直到调用解锁调度器函数才尝试进行下一次度。void rt_exit_critical(void); /* 退出临界区*/当系统退出临界区的时候,系统会计算当前是否有更高优先级的线程就绪,如果有比当前线程更高优先级的线程就绪,将切换到这个高优先级线程中执行;如果无更高优先级线原创 2021-08-17 12:38:43 · 4124 阅读 · 0 评论 -
快速排序qsort函数用法
一、qsort函数简介排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort函数(全称quicksort)。它是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度为n*log(n)。功能: 使用快速排序例程进行排序头文件:stdlib.h用法:void qsort(void* base,size_t nu.原创 2021-08-17 11:10:47 · 1113 阅读 · 0 评论 -
断言ASSERT使用详解
一、assert的定义原以为assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错"在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert() 的用法像是一种"契约式编程",其表达的意思就是,程序在假设条件下,能够正常良好的运作,其实就相当于一个 if 语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由程序运行引起更大的错误) }但是这样写的话,就会有无数个 if 语句,甚至会出.原创 2021-08-07 13:25:14 · 804 阅读 · 0 评论 -
常用内存操作函数
常用内存操作函数常用内存操作函数1.设置内存数据2.复制内存数据3.移动内存数据4.比较内存数据5.对齐分配内存6.释放对齐分配的内存总结常用内存操作函数内存操作是C语言的基础,常用的内存操作函数大致可以分成如下6类1.设置内存数据代码如下(示例):void* rt_memset ( void * s, int c, rt_ubase_t count )函数功能:此函数将内存的内容设置为指定的值参数s 源内存的地址c 将要设定的值count 源内存要被原创 2020-12-21 00:50:22 · 1139 阅读 · 0 评论 -
short转换为char,提取单字节
本文描述:将两个字节长度的wdVersion,分别提取出低字节和高字节的值,此方法可以用于不同类型不同长度的单字节提取!(注释种的位操作的方法也可以,先 移位 后 位与 操作)wdVersion的类型为unsigned short。2字节取变量wdVersion(长度2字节)的第一个字节的值! 第一步,取首地址 &wdVersion 第二步,强制转换 (char*)&wdVersion 将2字节da...原创 2020-06-27 15:49:51 · 8009 阅读 · 0 评论 -
删除单向链表的头节点
1、使用pTemp保存头节点的指针域(第二个节点的首地址),2、删除(free)头节点,3、再将pTemp传给新的pHead进而指向新的头节点。/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2020年3月19日*版本号:v1.0**问题描述:生成一条包含5个节点的单向链表,然后从头部开始依次删除,...原创 2020-03-19 00:33:12 · 9931 阅读 · 1 评论 -
删除单向链表的最后一个节点
分为三个步骤:1、找到倒数第二个内存,把它的指针域置为NULL;2、将最后一个节点所占用的内存(堆内存)释放掉;第一步:原创 2020-03-07 20:05:42 · 12870 阅读 · 2 评论 -
向单向链表中部插入节点
构造一条含有两个节点的单向链表:学生A,学生B单向链表的某一节点后插入,知道此节点的指针域next即可例如向节点A后插入,节点C: C.next = A.next; //A的下一个地址,就是B的地址;C连接B A.next = &C;//A连接C向单向链表中部插入“学生C”并输出新的完整的单向链表:学生A,学生C,学生B/**copyrigh...原创 2020-03-07 10:51:40 · 559 阅读 · 0 评论 -
单向链表新增节点之头插法(接上一篇尾插法)
使用“头插法”在单向链表的头部插入新的节点与尾插法的区别是:只需要定义pHead(指向头部节点首地址)即可,不用定义pTail,更简单不变的还是中间指针“pNode”在传递新的节点地址!!!/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2020年月4日*版本号:v1.0**问题描述:向单向链表头...原创 2020-03-05 00:01:07 · 1527 阅读 · 0 评论 -
链表新增节点之单向链表尾部插入新增节点
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2020年月4日*版本号:v1.0**问题描述:向单向链表尾部插入节点,新增并提供打印功能*输入描述:学生姓名*程序输出:;。*备注:*/#include <stdio.h>#include<string.h>#inclu...原创 2020-03-04 23:27:34 · 2689 阅读 · 0 评论 -
结构体&结构体数组
1、结构体的定义struct 结构体类型名{类型名 成员名;类型名 成员名;……};先声明结构体类型,再定义结构体变量名声明结构体类型,不分配空间定义结构体类型变量,就要分配内存空间1)结构体被分配的内存空间struct student{ int num;//4字节 char name[20];//20字节 char sex;//1...原创 2018-08-16 18:17:39 · 139429 阅读 · 11 评论 -
结构体数组的应用-投票并统计输出结果
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年8月16日*版本号:v1.0**问题描述:利用结构体数组统计选票*输入描述:;*程序输出:*/struct person{ char name[20]; int count;};struct person per[3];#in...原创 2018-08-16 18:53:47 · 1446 阅读 · 0 评论 -
根据结构体数组中某一数据项对结构体数组排序
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年8月17日*版本号:v1.0**问题描述:输入结构体数组,并根据结构体中的某一数据项对整个结构体数组进行排序*输入描述:;*程序输出:*/#include<stdio.h>#include<string.h>struc...原创 2018-08-17 17:46:06 · 14911 阅读 · 0 评论 -
指向结构体的指针&结构体成员指针
1、指向结构体的指针一个 变量的指针,就是该变量所占据的内存段的起始地址。指向一个结构体的指针变量,其值是结构体变量的起始地址。/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年8月17日*版本号:v1.0**问题描述:指向结构体变量的指针的应用*输入描述:;*程序输出:*/#includ...原创 2018-08-17 18:44:11 · 24124 阅读 · 2 评论 -
野指针与结构体成员指针,动态分配存储空间
1、野指针举例例1:明显的野指针,直接赋值#include <stdio.h>int main(){ int a; int *p; *p=10;//错误来源与此处 printf("%d %d\n",a,*p); return 0;}*p没有被初始化,而直接赋值为10,相当于把某一内存中直接存入“10”;未初始化的*p指向一...原创 2018-09-01 12:16:06 · 1703 阅读 · 0 评论 -
位运算
1、移位运算符左移、右移为数据转换为二进制后的整体移位,例如下程序:定义短整型无符号数n=3,(占2字节),即0000 0000 0000 0011移位1时,0000 0000 0000 0110=6;移位2时,1100=12;移位3时,0001 1000=24;/**copyright(c) 2018,HH*All rights reserved.*作 者:HH...原创 2018-09-17 18:16:17 · 182 阅读 · 0 评论 -
预处理-宏定义-条件编译
1、预处理之宏定义可以用#define命令将一个指定的标识符(即宏名)来代表一个字符串;宏定义语法:#define 宏名 字符串使用原则:1、“原样替换”;2、不能代替函数;3、定义时后缀不要加分号。带参数的宏定义#include <stdio.h>#define s(a,b) a*b //注意,此处不能加分号,否则就变成了s=(a*b;)in...原创 2018-08-09 11:53:34 · 2245 阅读 · 0 评论 -
链表初步
1、链表初步/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年9月4日*版本号:v1.0**问题描述:链表初步*输入描述:;*程序输出:*/#include<stdio.h>struct student{ int num; float score; st...原创 2018-09-04 10:14:52 · 304 阅读 · 0 评论 -
C语言中的格式字符和转义字符,所有指针变量占4个字节
1、格式字符格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。释义 格式字符 表示 pointer %p 以16进制形式输出内存地址 decimalism 十进制 %d 按十进制整型数据的实际长度输出 longdecimali...原创 2019-07-21 09:24:04 · 9101 阅读 · 1 评论 -
指针类型和指针强制转换
1、地址、字节、位位(bit)是电子计算机中最小的数据单位。每一位的状态只能是0或1。字节(Byte)是用于计量存储容量的一种单位,每一个字节由8位组成(1Byte = 8bit)。地址可以理解为在一片内存中,每个字节(Byte)的编号。他们在内存中的关系可以比作,内存是一栋大楼,字节(Byte)是大楼中的每一层,地址是楼层编号,位(bit)是每一层中的房间,每一层有8个房间...原创 2019-11-27 23:58:41 · 1322 阅读 · 1 评论 -
2018年7月1日
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年7月1日*版本号:v1.0**问题描述:while循环,1到100的加法*输入描述:;*程序输出:;*备注:sum=0的初始值一定要设置好!*/#include<stdio.h>int main(){ int n,sum;...原创 2019-11-27 23:43:45 · 138 阅读 · 0 评论 -
20118年6月29日
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年6月28日*版本号:v1.0**问题描述:条件运算符,优先级仅高于赋值运算符和逗号运算符!*输入描述:;;*程序输出:;。*备注:表达式1?表达式2:表达式3*条件运算符是C语言中,唯一的一个“三目运算符”!!!*/#include<std...原创 2019-11-27 23:43:28 · 144 阅读 · 0 评论 -
2018年6月28日
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年6月28日*版本号:v1.0**问题描述:体验逻辑短路;*输入描述:;;*程序输出:;。*/#include <stdio.h>int main(){ int a=5,b=6,c=7,d=8,m=2,n=2; (m=a...原创 2019-11-27 23:43:08 · 118 阅读 · 0 评论 -
2018年6月27日
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年6月27日*版本号:v1.0**问题描述:体验在赋值过程中,定义的类型vs赋值的类型不同时,最终输出结果的差异;*输入描述:;;*程序输出:;。*/#include <stdio.h>#include <math.h&g...原创 2019-11-27 23:42:50 · 112 阅读 · 0 评论 -
2018年6月26日
/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年6月26日*版本号:v1.0**问题描述:取地址运算符&,指针运算符*的使用;*输入描述:输入一个变量,一个指针变量,对指针变量进行运算;*程序输出:输出结果。*/#include<stdio.h>int main...原创 2019-11-27 23:41:53 · 182 阅读 · 0 评论 -
2018年6月25日
2018年6月25日/**copyright(c) 2018,HH*All rights reserved.*作 者:HH*完成日期:2018年6月25日*版本号:v1.0**问题描述:输入两个数,计算二者的和,验证不同数据类型的加法结果。*输入描述:输入两个数*程序输出:两个数的和,按某一类型输出。*/#include<stdio.h>int main...原创 2019-11-27 23:40:22 · 130 阅读 · 0 评论 -
Clanguage学习笔记
2018年6月24日stdio 就是指 “standard input & output"(标准输入输出)所以,源代码中如用到标准输入输出函数时,就要包含这个头文件!例如c语言中的printf("%d",i);scanf("%d",&i);等函数。stdlib 头文件即standard library标准库头文件stdlib 头文件里包含了C...原创 2019-11-27 23:39:23 · 249 阅读 · 0 评论