
C语言开发
c语言开发
rjszcb
不断学习变成牛
展开
-
C语言.数组,二维数组,指针,数组指针,二维指针,函数指针,结构体,作为函数形参的写法,以及实参的写法
C语言.数组,指针,数组指针,二维指针,作为函数形参的写法。原创 2024-07-29 10:02:40 · 366 阅读 · 0 评论 -
《数组,二维数组》(指针,二维指针)(指针数组,指针函数,函数指针数组)(数组指针,函数指针).篇三
这里是一个结构体类型的数组,所以,数组类型可不只是指针类型,char类型,可以是非常复杂的结构体类型。这句代码,是非常高超的手法,定义一个函数指针时,不知道要传什么参数,void *data,可以穿一个结构体进来,里面包含各种操作,数据。//这个事件,可以定义非常多,比如,按键,异常,各种请求事件,然后通过函数指针,实现不同功能。这些代码是,设计一个双向任务链表,结构体非常丰富,所以,要巧妙的利用好结构体,指针传参的妙用。在设计代码时,巧妙的设计,使项目简单,好看。原创 2024-07-30 21:23:41 · 181 阅读 · 0 评论 -
《数组,二维数组》(指针,二维指针)(指针数组,指针函数,函数指针数组)(数组指针,函数指针).篇二
实际函数,是编译器,给函数名绑定指向了一个地址,函数体,以这个地址作为起始地址,将函数体的数据编译放在一段内存地址中。通过下标[]来取,a【1】,取地址&a[]在,只能这样取,为了方便,用指针p指向数组a,就可以p++了。而a是数组名,是代表这段内存地址的首地址,地址是不可以加法运算的,另外,数组,取数据,只能一个一个取。由于上一篇,过于庞大,这篇来说,各个指针的使用,作为左值时,右值时的,用法。p是指针,指向地址,加,是指指向移动一下地址,同样,a也是代表地址的,但是意义却不同。原创 2024-07-30 19:22:42 · 109 阅读 · 0 评论 -
《数组,二维数组》(指针,二维指针)(指针数组,指针函数,函数指针数组)(数组指针,函数指针).篇一
如果按照这种方法写下去,那么在我的每一个函数里面,都必须作如此多的判断,写出的代码肯定很长,并且每一次处理,都要作许多次判断之后才找到正确的处理函数,代码的执行效率也不高。如下图,计算机按4字节进行管理,定义一个int型的变量b时,是将这个空间地址,分配给这个变量,定义变量,实际是向内存申请空间。所有的指针,实际和变量是一样的,是指针p指向了这个地址空间,普通变量一样的,绑定指定到这段内存,比如数组 int a【4】,首先无论是什么类型,都是计算机,分配内存的一种策略,如图,内存是一格格的地址空间,原创 2024-07-27 21:09:19 · 473 阅读 · 0 评论 -
JSON格式,C语言自己实现,以及直接调用库函数(一)
如果没有现成的 JSON 库,要自己实现 JSON 数据的解析和生成,可以按照 JSON 数据的结构特点,通过字符串处理来完成。JSON 对象:JSON 对象由键值对组成,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔,整体用花括号 {} 包裹。数组中的值可以是不同的数据类型,也可以是对象或数组。JSON 数组:JSON 数组由值组成,值之间用逗号 , 分隔,整体用方括号 [] 包裹。JSON 对象是由键值对组成,用花括号 {} 包裹,键和值之间用冒号 : 分隔,多个键值对之间用逗号 , 分隔。原创 2025-02-18 13:59:00 · 608 阅读 · 0 评论 -
c语言三角计算,数学计算,开方,平方,四舍五入
c语言三角计算,数学计算,开方,平方,四舍五入原创 2021-12-02 17:24:42 · 771 阅读 · 0 评论 -
Linux 支持程序在运行时动态加载和卸载共享库,动态链接库
Linux支持动态链接库(共享库)的概念,允许程序在运行时动态加载和卸载共享库。这有助于减小可执行文件的大小,共享代码,提高代码的可重用性。通过这个函数,搜索要调用的函数名,返回函数指针。原创 2024-08-22 09:08:41 · 322 阅读 · 0 评论 -
通过指针的方式,代替memcopy,增加数据拷贝速度
有段代码中有一个,*PtFrame = *Frame,方法是通过指针方式,拷贝数据,速度很快,通过指针指向一个结构体,便可以,实现快速赋值,复制数据,如果是视频数据流,一帧数据是非常的大1000多个字节至少,如果要对数据进行搬移,将会非常耗时,视频会卡顿。解决办法是,将这个队列,定义成结构体类型,每次只传入指针,进行拷贝,第二种是本篇想要验证的,只传指针给队列,快速读写队列,网络接收到数据到buf,buf指针指向malloc申请的地址。这个地址不释放,放在指针数组里,按位移量,给队列。原创 2024-08-14 15:48:31 · 304 阅读 · 0 评论 -
C语言,void类型,函数指针 void (*isr)(void) = NULL
void (*) (void) 表示一个数据类型,和int、char的作用类似,这里的类型是函数指针,函数没有入参也没有返回值。(void (*) (void)) 是强制类型转换,就像 (int)、(char)一样,这里是强制转换为函数指针类型。(void (*) (void))0 是把0强制转换为函数指针类型,就是内存地址0开始的数据是一个函数。一、C语言,void类型,函数指针 void (原创 2024-08-09 12:04:16 · 242 阅读 · 0 评论 -
C语言小项目,贪吃蛇
【代码】C语言小项目,贪吃蛇。原创 2024-08-02 22:06:36 · 139 阅读 · 0 评论 -
C语言小项目,企业,学生信息管理系统
【代码】C语言小项目,企业,学生信息管理系统。原创 2024-08-02 22:04:43 · 152 阅读 · 0 评论 -
a,&a,a【0】,&a【0】,&a[][3],用作(左值,右值)的区别
这两种定义方法相同点是都定义了4个int型变量,而且这4个变量都是独立的单个使用的;不同点是单独定义时a、b、c、d在内存中的地址不一定相连,但是定义成数组后,数组中的4个元素地址肯定是依次相连的。(3)数组中多个变量虽然必须单独访问,但是因为他们的地址彼此相连,因此很适合用指针来操作,因此数组和指针天生就叫纠结在一起。(1)从内存角度讲,数组变量就是一次分配多个变量,而且这多个变量在内存中的存储单元是依次相连接的。理解这些符号的时候要和左值右值结合起来,也就是搞清楚每个符号分别做左值和右值时的不同含义。原创 2024-07-27 21:24:48 · 438 阅读 · 0 评论 -
str字符串常量,字符指针char * str的存储方式,以及如何赋值的
在使用字符指针时,第一种为通常的情况。这次主要关注第二种情况:把字符串赋值给字符指针变量,pa中存储的不是这串字符,而是字符串的首字符的地址。abcdef作为一个常量字符串程序会把其放在一个单独的内存区域,pa存储的是字符a的内存地址,当程序打印时就能通过a的地址打印出整个字符串。原创 2024-07-31 22:15:12 · 409 阅读 · 0 评论 -
strcmp库函数原型
一直循环,*s1 为真,直到运到结束符’/0’,与s1,和s2一直相同,假设不相同,立马就会结束循环,*s1 - *s2 是一个非0,说明,两个字符不相等。原创 2024-07-30 21:29:52 · 164 阅读 · 0 评论 -
C语言.回调函数
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。你去店里买东西,老板说没货了,让你留一个联系你的方法,(这个方法包含一些具体怎么做,比如几点可以联系你,用wx还是电话),到货了就使用这个方法来通知你。与一般函数直接调用区别在于,使用回调函数的过程,是一个函数将另一个函数作为参数调用。而被用来调用的那个函数,就是回调函数。原创 2024-07-30 19:49:41 · 425 阅读 · 0 评论 -
C语言之.*(链表,循环链表,队列,循环队列)
a[3] , a[8]数组可以随机访问,但是链表不可以,需要指针,索引,一个个遍历。顺序表也可以通过指针p,类似数组,p+4,p+9随机,访问数据,顺序表地址必须是挨着的。链表:不像顺序表一样占据一段连续的内存空间,储存单元是分撒的任意的地址,每个数据都存放到链表的节点中,每个节点由指针连在一起。本例子中index,作为索引,方便查找,插入位置,但是如果数据过于庞大,不能采用最好,修改后面所有的index,时间会很长,看用在什么场景。//插入元素,并输出,然后,任意位置插入,输出。//新建节点插入头部。原创 2024-07-28 11:19:27 · 367 阅读 · 0 评论 -
C语言之 .struct结构体,enum枚举,union共用体,以及相互嵌套的使用
C语言之.(结构体,枚举,共用体的应用)结构体,套联合体,枚举的应用例子。原创 2024-07-28 11:17:38 · 650 阅读 · 0 评论 -
const的只读的作用
完全没有必要,因为内部数据类型的参数不存在构造、析构的过程,而复制也非常快,“值传递”和“引用传递”的效率几乎相当。为了提高效率,可以将函数声明改为void Func(A &a),因为“引用传递”仅借用一下参数的别名而已,不需要产生临时对象。如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能。同理不要把函数A GetA(void) 写成const A GetA(void),其中A 为用户自定义的数据类型。原创 2024-07-26 18:43:36 · 771 阅读 · 0 评论 -
TCP协议.之发送数据,粘包,拆包问题(二)
Tcp协议发送数据,粘包,拆包问题,这句话本身是错误的,tcp是协议,发送接收数据时并不会粘包,tcp,ip,只负责传输数据粘包是应用层解析数据时,包1和包2粘连在一起,解析数据时,出现错误的,网络中,很多博主,就没搞清楚。send,发送频率太快,导致发送包的时候,出现粘包,其实tcp传输数据时,没有包的概念,和uart串口一样,只有流的概念,tcp协议讲的很清晰,tcp是面向流的,一个一个字节流,tcp传输时,只按流的方式发送,没有一包一包的概念,假如发送数据很大,tcp协议,自动分成多包一个一个原创 2022-04-24 11:20:07 · 2954 阅读 · 0 评论 -
文本,字符串,十进制,十六进制格式读写或发送的区别
所谓的 文本读写,十六进制,ascall码读写,发送有区别吗??明天写原创 2022-04-20 19:41:24 · 1179 阅读 · 0 评论 -
C语言定义一个变量,或指针变量的实际意义
原创 2022-04-08 16:44:36 · 1197 阅读 · 0 评论 -
atoi库函数原型,字符串转数字,大小写互相转换
结构体套结构体,数据,枚举,是很常见的用法。数据也可以枚举,不用事先定义大小,使用时再定义大小typedef struct { combo_dev_t devno; /* device number */ input_mode_t input_mode; /* input mode: MIPI/LVDS/SUBLVDS/HISPI/DC */ mipi_data_rate_t data_rate; /*原创 2022-02-25 10:26:28 · 172 阅读 · 0 评论 -
数据结构之.队列,循环队列,链式队列(一)
队列你真的懂了吗?队列用来干嘛?什么场景用队里有优势?一、循环队列颜色说明如下:假设有一个空队列,长度为len = 10 fornt对头,rear队尾初始化时,指向0位置。注意,这里指向可不是指针的意思,就是front = =rear == 0。向队列写入1个数据,rear队尾向后移动一个位置,此时,front == 0,rear = rear + 1,也就是 rear == 1。继续向队列写入9个数据,rear队尾向后移动一个位置,此时,front = 0,rear = 9。如果是传统队原创 2022-01-10 20:45:23 · 474 阅读 · 0 评论 -
C字符串函数 printf ,sprintf ,scanf,fscanf详解
因为 spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时 被压进来的到底是个4字节的整数还是个2字节的短整数,所以采取了统一4字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32位的整数-1,打印时 4个位置不够了,就把32位整数-1的8位16进制都打印出来了。注意8进制和16进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16进制或8进制表示。// 产生:“000011D7”原创 2022-01-05 18:16:45 · 3814 阅读 · 0 评论 -
移植并使用Linux内核的通用链表
https://mp.weixin.qq.com/s/P6W4VOCW_8wzOu1AkxUzwA一直是我想做的事,怕删掉,复制了,望作者可以支持。完整的大家去看上面原作者拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)Linux爱好者 10月18日以下文章来源于嵌入式与Linux那些事 ,作者仲一在实际的工作中,我们可能会经常使用链表结构来存储数据,特别是嵌入式开发,经常会使用linux内核最经典的双向链表 list_head。本篇文章详细介绍了Linux内核的通用链表是如转载 2021-11-26 12:44:16 · 308 阅读 · 1 评论 -
linux c 多线程项目框架开发(一)
linux c 多线程项目框架开发(一)原创 2021-11-11 17:15:03 · 1464 阅读 · 0 评论 -
C语言开机后或第一次满足条件不再执行高级写法
g_char = SX_FALSE;int main(int argc, char *argv[]){ HI_S32 s32Ret = 0; int fd0 = -1; char *filename0 = NULL; char buf[10]={0}; int audioret = -1; filename0 = "/dev/tlv320aic31"; SX_U32 ts0 = get_sys_ms(); SX_U32 oldMs = ts0; SX_U32原创 2021-11-10 17:15:15 · 656 阅读 · 0 评论 -
C语言字符操作
memcpy,比较,strcpysprinrf酝酿中。。。原创 2021-11-03 17:52:52 · 244 阅读 · 0 评论 -
C语言三角计算,浮点预算
cos,tan,acos sin,floor,ceil,sqrt酝酿中。。。。。原创 2021-11-03 17:51:22 · 211 阅读 · 0 评论 -
C语言排序算法
酝酿中。。。。。原创 2021-11-03 17:49:28 · 260 阅读 · 0 评论 -
链表,循环链表
酝酿中。。。。原创 2021-11-03 17:48:16 · 83 阅读 · 0 评论 -
Linux 多线程通信.全局变量,结构体,队列,项目模版(一)
原创 2021-10-28 15:15:38 · 162 阅读 · 0 评论 -
结构体高级用法,线程通信传参
预备中原创 2021-10-28 15:13:05 · 90 阅读 · 0 评论 -
C语言do while
**一、do while的好处** 先上一段代码 ```c do { s32Ret = HI_MPI_VO_GetChnFrame(SAMPLE_VO_DEV_DHD0, SAMPLE_VO_DEV_DHD0, &ggg_stFrame, 200); if (HI_SUCCESS != s32Ret) { printf("\r\n######### HI_MPI_VO_GetChnFrame fail ############# \.原创 2021-08-03 15:13:42 · 202 阅读 · 0 评论 -
2021-07-15c语言的split字符串分割(函数strtok)(二)
转摘自:https://blog.youkuaiyun.com/RNG_uzi_/article/details/1184269471、说明:在C语言中实现对字符串的分割(多亏了strtok函数)2、案例讲解1、Strtok()函数详解: 该函数包含在"string.h"头文件中1) 函数原型: char* strtok (char* str,constchar* delimiters );2) 函数功能: 切割字符串,将str切分成一个个子串3) 函数参数:str:在第一次被调用的时间str是传入需要转载 2021-07-15 15:45:55 · 312 阅读 · 0 评论 -
C语言字符串分割split函数(strtok)
原文地址:http://minilinux.blog.51cto.com/4499123/1309779。背景假如现有配置文件如下:ip=sadfip =192.168.246.22dns = 218.85.157.99读取规则为:以‘#’开头的为注释,不读取空行也不读取‘=’两边可以有空格知识点写满足以上要求的程序需要以下知识点:1.断言的使用(assert)assert宏的原型定义在<assert.h>中,转载 2021-07-15 15:38:11 · 1984 阅读 · 0 评论 -
C语言xml文件存储数据文件(一)
————————————————版权声明:本文为优快云博主「jack8126」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/jack8126/article/details/117004179本文,摘抄的,未验证过,纯属保存留用,请看原作者。c语言读取xml配置文件c语言要实现读取xml配置文件的功能。需要先编译libxml2库。1、编译libxml2库libxml2库从网络下载得到,这里下载的文件是:转载 2021-07-14 17:51:59 · 939 阅读 · 0 评论 -
C语言字符串与数字的相互转换api实现原理
一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(‘\0’)结束转换,并将结果返回。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(‘\0’)结束转换,并将结果返回。函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0’)才结束转换,并将结果返回。转载 2021-07-09 15:27:56 · 466 阅读 · 0 评论 -
C语言各种库函数表
linux atoi() 函数使用说明原型如下:#include <stdlib.h>int atoi(const char *nptr);原创 2021-07-03 14:37:19 · 95 阅读 · 0 评论 -
原码, 反码, 补码 详解
原码, 反码, 补码 详解本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中转载 2021-06-23 12:21:46 · 430 阅读 · 0 评论