- 博客(69)
- 收藏
- 关注
原创 C语言编译和预处理
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。语法:我们可以定义的符号实际上十分的多样化1000register//为 register这个关键字,创建一个简短的名字for;;//用更形象的符号来替换一种实现break;case//在写case语句的时候自动把 break写上。
2024-05-04 20:36:10 1093
原创 C语言文件操作
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境 后缀为.exe)。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件, 或者输出内容的文件。在以前所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
2024-04-29 22:35:39 643
原创 动态内存管理
这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己 来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。int main()//动态内存开辟return 1;//异常返回//使用int i = 0;
2024-04-28 16:32:17 1042
原创 结构体枚举、联合、位段
enum Day//星期Mon,Tues,Wed,Thur,Fri,Sat,Sunenum Sex//性别MALE,FEMALE,SECRETenum Color//颜色RED,GREEN,BLUE以上定义的enum Dayenum Sexenum Color都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。这些可能取值都是有值的,默认从0开始,一次递增1,当然在定义的时候也可以赋初值。enum Color//颜色RED=1,GREEN=2,
2024-04-28 16:28:09 331
原创 深度剖析图像处理—边缘检测
数字图像处理,bmp图像的边缘检测,图像边缘增强和边缘分割的基础,深度剖析各种算子和实现方法,内附实例讲解个人心得,文末附源码,希望对您有所帮助
2024-04-22 21:48:35 2862 5
原创 深入剖析图像平滑与噪声滤波
深入探究图像的平滑与滤波,总结各种滤波方法和代码实现,万字详解,数字图像处理基础,文末附源码,希望可以为您提供帮助
2024-04-20 22:19:36 2267 3
原创 C语言—常用字符串函数剖析
这个函数是什么意思呢,在C语言的函数库中,函数执行出现异常会自动返回错误码,而这个错误码会自动存储在全局变量。这个变量中,这个变量是C语言自动创建的,而strerror就可以去解读这个错误码。当然是不可以的,字符串内容被修改,无法找到\0,程序会死循环。可以减小我们程序出现问题的可能,大家有兴趣可以下去查一下。这个函数在数据结构中好像有过讲解,以后会写文章详细讲解。因为返回的是无符号整型,那么怎么能出来负数呢?大家思考一下,这个程序的运行结果是什么?返回错误码,所对应的错误信息。这个函数就比较有意思了。
2024-04-18 13:26:11 805
原创 C语言—深度剖析函数指针,函数指针数组
我们先来看一段代码输出的是两个地址,这两个地址是 test 函数的地址。那我们的函数的地址要想保存起来,怎么保存?首先,能给存储地址,就要求pfun1或者pfun2是指针,那哪个是指针?答案是:pfun1可以存放。pfun1先和*结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参 数,返回值类型为void。
2024-04-17 22:37:54 350
原创 C语言—字符指针,指针数组和数组指针详解
数组指针是指针?还是数组?答案是:指针。我们已经熟悉: 整形指针: int * pint;能够指向整形数据的指针。浮点型指针: float * pf;能够指向浮点型数据的指针。那数组指针应该是:能够指向数组的指针。下面代码哪个是数组指针?//p1, p2分别是什么?//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个数组,叫数组指针。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
2024-04-16 15:57:57 535
原创 C语言—深度剖析数据在内存中的存储
计算机存储的方式主要有两种,分别是定点数和浮点数那存储的内存就那么多,怎么样才能存储更多的位数呢?科学家们就很聪明,通过科学计数法来创造了浮点数的存储好,说了那么多,感兴趣了了解一下就行那么需要我们记住的是,定点数存储的范围小,但是精确;浮点数存储的范围更大,但是不精确。
2024-04-16 15:53:33 1222
原创 C语言结构体
有了结构体类型,那如何定义变量,其实很简单int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化。
2024-04-11 17:12:32 298
原创 C语言指针—二级指针和指针数组
指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?那么指针变量也是变量,那么pa在内存空间中应该也有地址pa的地址中存放了a的地址ppa中存放的是pa的地址那么我们该如何解引用呢那么我们再来详细解释一下注意不能理解为存放地址的地址。
2024-04-10 18:15:05 360
原创 C语言指针—野指针、指针运算、指针与数组
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与 指向第一个元素之前的那个内存位置的指针进行比较。既然可以把数组名当成地址存放到一个指针中,我们使用指针来访问一个就成为可能。但是,数组就是数组,指针就是指针,二者不能混为一谈。那这样我们就可以很简单的计算出字符串长度。这个代码之前写过,但是是不是还能简化一下。**注意:**不是所有的指针都能相减。指向同一块空间的指针相减才会有意义。我们来看下面的式子的运算结果。:是一个变量,存放的是数组。:一组相同类型的元素集合。
2024-04-09 20:50:52 406
原创 C语言指针—指针和指针类型
那我们就可以这样理解:内存指针变量我们可以通过&(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个 变量就是指针变量。
2024-04-08 18:28:48 545
原创 基于ARM内核的智能手环全流程开发(万字详解,文末附源码)
基于STM32开发的智能手环,从零开始记录项目十天开发的全流程,全流程跟进记录开发stm32的心得和一些笔记
2024-04-07 20:23:26 2571
原创 基于ARM内核的智能手环(day8)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY8,学习MPU6050计步以及心率模块的使用,项目全流程开发学习结束,项目结果功能展示,文末附项目完整源码
2024-04-07 20:13:10 426
原创 基于ARM内核的智能手环(day7)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY7,RTC时钟的学习和表盘的绘制,文末附源码
2024-04-07 19:37:12 359
原创 基于ARM内核的智能手环(day6)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY6,模拟量传感器(光照传感器、空气质量传感器)的配置和使用,文末附源码
2024-04-07 19:22:10 1191 1
原创 基于ARM内核的智能手环(day5)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY5,如何查看传感器产品手册以及通过时序获取传感器数值相关内容,文末附源码
2024-03-31 20:21:47 1120 1
原创 基于ARM内核的智能手环(day4)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY4,学习串口通信和lcd屏幕显示相关内容
2024-03-31 19:37:52 854
原创 基于ARM内核的智能手环(day3)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY3,学习中断函数和时间片轮询相关内容,学习串口通信的RS232协议相关内容,文末附源码
2024-03-31 19:14:23 1273
原创 基于ARM内核的智能手环(day2)
零基础项目全部流程记录,基于ARM内核的智能手环,使用STM32进行开发。DAY2,记录按键控制与非阻塞以及STM32寄存器来控制led灯状态反转
2024-03-31 18:10:30 1159
原创 操作符详解(C语言)—第三期
所以,表达式中各种长度可能小于int长度的整型值,都必须先转 换为int或unsigned int,然后才能送入CPU去执行运算。表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度 一般就是int的字节长度,同时也是CPU的通用寄存器的长度。实例2中的,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof(+c) 是4个字节.因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长 度。
2024-03-22 22:43:18 797
原创 操作符(C语言)—第二期
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。关于sizeof其实我们之前已经见过了,可以求变量(类型)所占空间的大小。这些运算符都可以写成复合的效果。
2024-03-21 22:51:52 284
原创 操作符详解(C语言)—算数操作符,移位操作符,位操作符
一道小面试题:如何交换两个变量的值,不能使用第三个变量,即a=3,b=5,交换后a=5,b=3?
2024-03-20 18:18:44 893
原创 C语言实战—三子棋游戏
纯C语言实现,完整的小游戏开发思维和流程,相信跟着一起做一遍一定会对您的全局思维和项目开发思路有一定启发,同时也是对C语言编程能力的一次很好练习
2024-03-19 21:09:07 719
原创 C语言数组—二维数组
从零开始深度理解二维数组,内附实战算法帮助理解数组作为函数参数所应该注意的问题,当数组以形参传到函数内部时,是无法计算元素个数的
2024-03-18 22:51:21 812
原创 C语言数组—一维数组
很简单,一组数就是数组我们已经完成了函数部分知识的学习,那么接下来,我们将会进入数组部分的学习数组部分的主要有那么话不多说,我们先来看一维数组。
2024-03-17 23:34:22 283
原创 C语言函数—递归
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接 调用自身的 一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略 只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的主要思考方式在于:把大事化小写一个简单的递归函数看看什么效果int main()main();return 0;运行结果。
2024-03-14 23:08:52 496
原创 C语言函数—函数的嵌套调用、链式访问、声明和定义
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数 声明决定不了。函数的声明一般出现在函数的使用之前。要满足先声明后使用。函数的声明一般要放在头文件中的。int b = 20;//函数声明一下 - 告知return 0;//函数的定义因为代码是从上往下运行的,所以把函数放在主函数的前面就不用声明了定义是一种更强有力的声明函数的定义是指函数的具体实现,交待函数的功能实现。project.h的内容。
2024-03-13 17:44:59 411
STM32技术参考手册中文
2024-03-26
STM32固件库使用手册的中文翻译版
2024-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人