C语言学习笔记
文章平均质量分 70
在学习C语言的过程中整理的笔记,在嵌入式的开发应用中不断加深和巩固,方便为后续的学习进行补充。
嵌入式阿役
02年,23届物联网工程毕业,入职深圳一家中小型公司研发部做嵌入式开发已有一段时日,在嵌入式的学习生涯中养成的习惯改变了我的人生轨迹和日常生活,目前主要是做底层驱动和应用层的开发,今后将会一直学习下去,同时也会分享在学习和开发过程中的历程和感悟。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(十四).条件编译
至此,c语言基础的学习就已经结束了,一共14篇总结笔记,记录于我在入门嵌入式的时候学习的C语言过程中的感悟。在嵌入式的C语言应用中,有部分会跟我们学习的C语言有出入,这是非常正常的,因为我们在学习C语言的时候,程序是运行在电脑上的,而在嵌入式中,一般都是运行在单片机上,所以需要考虑内存以及环境问题,这就涉及到非常多的嵌入式C相关的规范。原创 2024-04-24 09:20:58 · 628 阅读 · 0 评论 -
(十三).链表
追加操作:a a+ --- 如果文件存在打开,不存在创建文件打开 会找到文件末尾添加新内容 "a" "a+"写操作:w w+ --- 如果文件存在,打开,如果文件不存创建文件打开 会将原有的内容清空掉 "w" "w+"../../ --- 上一级目录的上一级目录 ./../../day11/课堂笔记/day11.txt。2、申请空间 --- 动态申请 --- 用指针指向它。动态申请空间 --- 挂载到链表。原创 2024-04-24 09:10:52 · 658 阅读 · 0 评论 -
(十二).图书管理系统(数组版)
【代码】(十二).图书管理系统(数组版)原创 2024-04-24 09:04:51 · 236 阅读 · 0 评论 -
(十一).结构体
结构体类型的定义只要在使用之前就可以,如果是在全局定义,可以在所有函数内部都能够使用,如果函数内部定义的那就只能在函数内部使用。第二种方式:直接在定义结构体数据类型的时候,直接起别名 ---- ******建议使用******结构体数组初始化 -- 初始化里面的结构体 --- 成员顺序,不能跳跃赋值。每一个成员距离结构体变量的首地址必须是这个成员所占字节数的整数倍。声明结构体数据类型的时候 所占字节数小的成员尽量放在前面。如果成员是数组,那么看数组中数据的类型。成员的排布是按照申明的顺序进行排布。原创 2024-04-24 08:55:27 · 438 阅读 · 0 评论 -
(十).构造数据类型的指针
malloc会返回一个空间的首地址,void *,后面使用空间的时候需要强转地址。void (*f)(float b, int a, char *m)为 指向函数的指针。void (*f)(float b, int a, char *m)为 指向函数的指针。这是一个返回类型为int *,形参为函数指针的指针函数,且指针*mm指向该函数。// 改变的指针空间,让指针指向地址为0的区域。定义一个函数,传入两个字符串,返回较大的那个字符串的地址。指针指向的空间被销毁的时候,要将指针指向NULL。原创 2024-04-23 14:09:56 · 988 阅读 · 0 评论 -
(九).指针
学习了指针的基本概念以及扩展,对于指针的初始化定义和地址偏移需要理解,特别需要注意的是定义指针的类型时,也就是指针指向对象的类型是决定通过指针地址开始数几位字节的关键。原创 2024-04-23 13:52:07 · 578 阅读 · 0 评论 -
(八)。修饰符和内存
你没有将变量定义成寄存器变量,现在有寄存器空闲,CPU检测到程序需要对变量进行频繁的读写操作,会将变量自动转换成寄存区变量。寄存器数量是有限的,如果用户在定义寄存器变量,寄存器已经被占用完了,这个变量也会被当做是普通变量。--- 全局声明// 自动识别全局或者局部变量,放到对应的存储区域。--- 多文件操作 -- 项目。const 关键字 -- 用来修饰的变量,变量值不能被修改。变量的定义和声明形式不好区分,变量的声明需要加extern.-- test函数里面写的。1.任意两个整数合并。原创 2024-04-23 09:31:20 · 615 阅读 · 0 评论 -
(七).函数
函数声明在编译阶段单文件函数定义的时候需要注意功能函数是否在主函数后面,如果在后面的话需要在头文件后面作声明处理,在做项目的时候,往往有着多个文件,在库文件中声明,主函数文件中直接调用库函数参数传递有两种形式:值传递:实参将数值传递个形参,实参和形参就没有关系了,对于形参的操作不会影响实参。地址传递:实参将地址值传递个形参,在函数内容通过解地址可以获取外部空间,可以操作外部空间。原创 2024-04-23 09:15:41 · 487 阅读 · 0 评论 -
(六).二维数组
计算每一行的平均值,以及每一行的最大值;计算每一列的平均值,以及每一列的最大值。例如:输入asd123jk456,hg789ck 输出整数:123,如果没有数字则输出0;定义二维数组的个数:数据的类型 数组名[元素个数][每一个元素数据的个数];4.下列程序的功能是:输入字符串提取字符串中首个数字字串,并转为对应的数字;1.在一个数组中,有选择的执行时升级排序还是降级排序,原创 2024-04-22 09:34:03 · 756 阅读 · 0 评论 -
(五).数组
1、根据需求定义数组,有16个字符型数据,要定义一个数组来存储16个数据,有100个int型数据,要定义一个数组来存储100个数据,有20个类型是float型的地址,需要数组存起来;元素的数据类型:除了 数组名[元素个数] 剩下的就是元素的数据类型。数组中有多少个元素:数组总的字节数 / 元素数据类型所占字节数。数组总的字节数=元素数据类型所占字节数 * 元素的个数。键盘输入五个元素的值,并且打印出5个元素的值和地址。元素的地址相减得到的就是中间相差的元素的个数。元素的数据类型 数组名[元素的个数];原创 2024-04-22 09:28:19 · 403 阅读 · 0 评论 -
(四).控制语句
今天学习了控制语句的四大结构,顺序结构,选择结构,循环结构,跳转结构,goto的函数对于我个人来说是第一次认识,需要多加练习,其中值得注意是for循环的嵌套使用以及if控制语句的灵活搭配有着解决复杂问题的功能,需要多加思考思路。原创 2024-04-21 12:53:34 · 471 阅读 · 1 评论 -
(三).运算符
5.取u16 a = 0xaabb的低八位,取u16 b = 0xccdd的中八位,取u16 c = 0xeeff的高八位,合成一个数0xeecdbb。3.收到的内容是两个字节长度,但是我想要他的低八位-- 放入到小的数据类型中 unsigend short b = 0xf1fa;要发送数据位 0xfa 0xfb 0xfc 0xfd 0xff 和 校验和(之前发送数据的和取低八位)4.用户输入两个数据,如果第一个数据能被第二个数据整除,就打印OK,不能整除就打印NO。定义一个变量,u32 b;原创 2024-04-21 12:42:11 · 353 阅读 · 1 评论 -
(二).数值进制&进制转换
1.有两个变量,输入两个数据放入到两个变量中,然后交换两个变量的值,最后输出交换后变量中的数据。原创 2024-04-20 10:13:10 · 1072 阅读 · 0 评论 -
(一).mian函数&基本数据类型
整数有大有小,为了节省空间可以大数据用大空间,小数据用小空间。整数有正数和负数之分,C语言里面分为有符号数和无符号数。使用整型类型开辟的空间是用来存放整数的。原创 2024-04-20 09:56:46 · 737 阅读 · 1 评论
分享