自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 C语言零基础手把手教学笔记19--指针的进阶1

1、指针是个变量,用来存放地址,地址唯一标识一块内存空间2、指针的大小是固定的4/8个字节(32位平台/64位平台)3、指针是有类型,指针的类型决定了指针的+-整数的步长,指针解引用操作时候的权限4、指针的运算。

2023-09-05 15:30:09 41

原创 C语言零基础手把手教学笔记18--数据存储2

补码存入内存中去,a的类型是char,所以是1个字节,就是8个bit位,所以接下来需要做整型提升:这里符号为是负数,整型提升高位全部补1。反码:11111111 11111111 01111111。补码:11111111 11111111 10000000。结果:11111111 11111111 10000000。这里打印无符号的十进制数字,无符号数的原码反码,补码一致,%d打印十进制有符号数字,%u是指打印十进制的无符号数字。先存储再提升,符号数高位补1,无符号数高位补0.结果:-1 -1 255。

2023-09-04 16:57:49 45

原创 FreeRTOS零基础手把手教学笔记2

任务的创建和删除的本质就是调用FreeRTOS的API函数。

2023-09-04 16:08:36 64

原创 Freertos零基础手把手教学笔记1

裸机:裸机是前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序1、实时性差(应用程序轮流执行)2、delay(空等待,cpu不执行其他代码)3、结构臃肿Rtos是实时操作系统,强调的是实时性。1、分而治之(实现功能划分为多个任务)2、延时函数(任务的调度)3、抢占式(高优先级抢占低优先级)4、任务堆栈(每个任务都有自己的栈空间)2、FREERTOS简介免费的嵌入式实时操作系统。

2023-09-01 11:11:46 129

原创 C语言零基础手把手教学笔记17--数据存储1

类型的意义:1、使用这个类型开辟内存空间的大小(大小决定了使用范围)2、如何看待内存空间的视角什么是大端小端:(从左到右是由低到高)大端(存储)模式(大端字节序存储模式):是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。设计一个程序来判断当前机器的字节序int main()int a=1;if(*p==1)printf("小端\n");elseprintf("大端存储\n");

2023-08-30 17:50:32 44

原创 数据结构与算法零基础手把手教学笔记1

算法中基本操作的执行次数为算法的时间复杂度。算法是定义好的计算过程,他取一个或者一组的值输入,并产生出一个或一组值作为输出。😁一般情况下复杂度计算未知数时都用N,但是也可以是M、K等等其他的。1、算法效率:如何衡量一个算法,主要从时间和空间两个维度来衡量的。O(1)最好的情况:任意输入规模最小的运行次数(下界)O(N)最坏的情况:任意输入规模最大的运行次数(上界)算时间的复杂度,不能只看几层循环,而是去看他的思想。O(N/2)平均情况:任意输入规模的期望运行次数。📵O(1)不是代表算法运行1次,是常数次。

2023-08-28 15:29:11 31

原创 C语言手把手零基础笔记17—指针1

指针是一个编程语言的对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。指针-指针=中间元素的个数,可以从如下看出,大地址减小地址是中间元素的个数,如果是小地址-大地址的绝对值是中间元素的个数。2、sizeof(arr)---sizeof(数组名):此时此刻数组名不是首元素地址,这里表示整个元素的数组,1、&arr--&数组名--数组名不是首元素的地址,是数组名这里表示整个数组。野指针是指指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)这里地址存放的是数组的首元素的地址。

2023-08-25 13:35:13 30

原创 C语言手把手教学零基础笔记16—实现三子棋的游戏

今天应用所学的内容完成三子棋1、首先写出测试函数,考虑到玩家或许玩完会又想玩,因此我们需要用do....while 循环,在这个过程要设置一个菜单,让玩家选择是否要继续游戏那么结合我们的test函数,先把具体框架列出如下👇:2、紧接着我们将游戏整个实现,封装在game函数里面。要画出九宫格,我们需要设置一个数组,char board[3][3]3、在封装游戏函数中,我需要先初始化我们的棋盘。我们将棋盘封装在一个函数中,再在game函数中调用。

2023-08-23 13:58:32 31

原创 嵌入式零基础笔记3

它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。每个定时器有16位自动加载递加/递减计数器、1个16位的预分频器和4个独立通道。内嵌ARM的SWJ-DP接口,这是一个结合了JTAG9的串行单线调试的接口,可以实现串行单线调试接口或JTAG接口的连接。-- 3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM(脉宽调制)或脉冲计数通道和增量编码器输入。-- 多达3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制)

2023-08-16 09:44:19 37

原创 嵌入式零基础笔记2

可以直接将ADC的值通过DMA的绿色通道,直接读出来放到SRAM里面。传统的传输方法,如果不使用DMA的话,我们想把数据读出来放到FLASH和SRAM里面,必须从外设读出来通过内部AHB总线放到CPU,然后再存放到FLASH和SRAM里面。在需要情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,为了防止意外写入I/O寄存器,在APB2上的I/O脚可达到18MHZ的翻转速度。每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道:传输的长度、传输的源地址和目标地址都可以通过软件单独设置。

2023-08-14 09:14:25 30

原创 嵌入式零基础笔记1

存储量:6--32KB 8--64KB B--128KB C--256KB D- 384KB E--512KB G--1MB I--2MB。引脚:C--48脚 R--64脚 V--100脚 Z--144脚 A--168脚 I--176脚 B--208脚 N--216脚。F---通用型 S---简单型 L--低功耗 H--高性能 AL---汽车应用低功耗型 AF--汽车应用通用型。封装:H--BGA 封装 T--LQFP封装 Y--WLCS64封装。子系列:02---子型号名。

2023-08-10 11:07:46 46 1

原创 C语言零基础笔记16–冒泡排序详解

(3)但是我们的数组如果是0,1,2,3,4,5升序排列,这样的做法会很复杂,因此我们需要优化我们的代码。重点⚠️:arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr 的首元素的地址。1、确定冒泡的趟数(10个元素有9趟,所以n个元素有n-1趟)2、每一趟冒泡排序指定元素和相邻元素进行大小比较,确定其位置。要实现升序,冒泡排序思想上两两相邻的元素进行比较。紧接着我们需要排序9,👇也是一趟冒泡排序!第一趟冒泡排序元素10,一趟里面排了9次,第二趟冒泡排序排元素9,一趟里面排了8次,

2023-08-01 14:40:09 35 1

原创 C语言零基础笔记15—一维数组的内存存储和二维数组的创建

⚠️看我们的地址,每个地址间隔4。数组在内存中连续开辟的空间存放的。(3)如果要想第一行只有 1 2 3。第二行是4和5,其余都赋0。👆这里我们省略了列,但还是出现报错情况,,由此可知我们不能省略列。总结⚠️:二维数组里面可以省略行,但千万不能省略列!⬆️上述代码可以得到我们想要的,这个是默认初始化。(2)如果我们想知道他们的内存地址,就改成%p。(1)二维数组的使用也是通过下标的方式。第二行是5 0 0 0,其余全部是0。⬆️这里出现了报错,显示的缺少下标。由上面代码 能看出可以省略行。

2023-08-01 10:28:12 37 1

原创 C语言零基础笔记14—数组(sizeof和strlen)

为啥最后一个是随机数,是因为它需要找到\0,计算\0之前的字符串长度,所以说是随机数。2、strlen是求字符串长度,只能针对字符串求长度。sizeof是计算arr所在空间的大小,放了7个元素,每个元素是一个char。strlen是在求字符串长度,\0前的字符数6个字符,所以长度是6。3、sizeof计算变量、数组、类型的大小,单位是字节。1、一维数组的创建和初始化。3、一维数组在内存中的存储。4、二维数组的创建和初始化。6、二维数组在内存中的存储。7、数组所谓函数的参数。TDD-测试驱动开发。

2023-07-31 16:49:22 69 1

原创 C语言零基础笔记13—函数的递归

程序调用自身的编程技巧,一个过程或函数在其定义中直接或者间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要当多次重复计算,大大减少了程序的代码量。堆区里面放动态开辟的内存,malloc这些函数开辟的空间。静态区的全局变量,比如static修饰的变量。我们需要给内存分为几个区域,在C语言中我们划分的区域分为,栈区、堆区、静态区。重点是🀄️:arr传参传过去的不是整个数组,而是首元素的地址。

2023-07-27 09:57:54 26

原创 C语言零基础笔记12—函数的嵌套和链式访问

后面可以把函数的声明放在.h文件里面,把函数的实践放在.c文件里面。到时候可以直接引用。return value返回值,返回的都是打印的字符的个数。函数声明一般要出现在函数的使用之前,要先满足先声明后使用。🚩把一个函数的返回值作为另一个函数的参数。所以上述的代码的结果是4321。函数的声明一般放在头文件中。

2023-07-26 15:15:47 50 1

原创 C语言零基础笔记11—自定义函数(2)二分查找法

传址调用:传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式,这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。发现错误🙅,因为我们数组传参,数组的临时拷贝会造成空间的浪费。数组是一个连续的空间,里面可以放很多的元素,数组传参传过去的不是所有元素,仅仅传过去的是数组第一个元素的地址。函数的传值调用:函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。🔔所以我们计算数组长度的时候就应该放在主函数里面求解,而不是我们定义的函数。

2023-07-24 15:59:23 42

原创 C语言零基础笔记10——函数(1)

函数主要掌握的内容有:1、函数是什么;6、函数的嵌套调用和链式访问;7、函数的声明定义;1、代码编写完成后之后迫不及待的想知道结果,想把这个结果打印到屏幕看看,这个时候使用的一个功能:将信息按照一定的格式打印到屏幕(printf),C语言的常见的库函数:1、io函数;2、字符串操作函数;4、时间/日期函数;2、在编程过程中我们会频繁的做一些字符串的拷贝工作(strcpy)3、在编程是我们也计算,总是计算n的K次方的运算(pow)C语言中的函数分类:1、库函数;在这里先认识strcpy。

2023-07-09 23:07:21 49 1

原创 C语言零基础笔记9——goto语句实现关机程序

其中shutdown -s是关机,-t是关机多少秒;我们这里需要调用system()执行系统命令。它的头文件是<stdlib.h>上一期讲述了什么是goto语句的作用。这里我们选择应用他来实现关机程序。这个可以作为我们的关机程序。

2023-07-07 23:49:12 43 1

原创 C语言零基础笔记8—goto语句

虽然在理论上goto语句是没有必要的,实践中没有goto语句也可以很容易跳出代码,但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构处理过程,例如一次跳出两层循环或者多层循环🔄。这种情况使用break达不到目的🎯。它只能从内层循环退出到上一层循环➰。C语言中提供了😌可以随意滥用的goto语句和标记跳转的标号。其实goto语句最适合的是嵌套语句,具体情况如下。

2023-07-05 23:38:40 27

原创 C语言零基础笔记7-猜数字游戏

但是由于srand()括号里面必须为整数,我们设置为1,结果又出现了问题⚠️,就是每次随机数都数一样的,所以我们考虑将时间传进去,作为变量,使得每次随机数不一样。当前计算机时间-计算机的起始时间(1970年的1月1日0时0分0秒)=(xxxx)秒。强制将类型转换成unsigned int,调用time函数,里面用NULL的空指针。那么这个时候设置游戏如何生成随机数,在C语言中,rand是生成随机数的。要使得每轮的随机数都不一样,必须调用srand的函数。下一步⬇️我们需要电脑生成1-100的随机数,

2023-07-05 22:31:02 26

原创 C语言零基础笔记6—分支与循环练习题2

注意⚠️如果你写下 scanf("%d,%d,%d",a,b,c);那么你输入的时候就必须输入1,12,4才行,不然最后的结果是错误的。2、打印3的倍数-写一个代码打印1-100之间所有的3的倍数的数字。(条件:能被4整除但不被100整除的是闰年;能被400整除的是闰年)3、最大公约数--给定两个数,求这两个数最大公约数。4、打印1000年到2000年之间的闰年。5、写出100-200之间的素数。1、写代码将三个数从大到小排列。如果需要我们自行输入的话。

2023-06-27 22:48:19 62 1

原创 C语言基础第一部分知识点笔记

switch()里面是整型常量表达式 ,int是整形,long长整型,char是字符类型,存入的对应的Ascall码值,在这里也是整型,float是单精度浮点型,所以选D。D错误,因为else和他相临的if语句进行匹配,而不是和他对齐的if语句进行匹配。3、int 、continue 、struct 都是关键字。A错误,因为指针要么是四个字节,要么是8个字节。typedefy是关键字。C错误,因为指针的大小也可以是8个字节。B是正确的,指针是变量,用于存放地址。D错误,指针指针是变量。

2023-06-25 11:06:52 90

原创 C语言零基础笔记—分支与循环练习题

",然后我们从两端向中间移动,此时左侧下标为0,但是右侧下标此时⚠️注意,不能用(sizeof(arr)/sizeof(arr[]))-1,因为其实字符串后面还有一个\0,它占了一个字符,所以这里不能是-1,而应该是-2。3、题目:有一个有序数组中查找具体的某个数字n,编写int binsearch(int x,int v[],int n),功能:在v[0]

2023-06-19 20:42:33 33

原创 C语言零基础笔记-5 do while语句

到i=5的时候,直接永久终止循环,最后的结果是1、2、3、4。然后那个变成continue,那么整个情况结果是什么呢?因为i=5时,continue,跳出本循环,i=5,又进去遇到continue还是跳出,就一直卡在这里。如果我们像之前一样加上break后,结果会有什么变化呢。结果还是 1 2 3 4,

2023-06-15 17:53:56 46 1

原创 C语言零基础笔记- 4 for的变种

这是一个死循环,for循环里面分号隔开的初始化,判断和调整都可以省略掉,但for循环的判断部分如果被省略,那判断条件就是恒为真。如果我们像上面这样写,最终打印出多少个呵呵?2、所以如果不是特别熟练建议不要随便省略。打印了100个呵呵。我们可以简化 一下。怎么会只有10个呵呵呢?

2023-06-11 17:11:24 20

原创 C语言编程零基础笔记 3-for循环

那么这里它的作用是只是跳出当前的这一个循环,还是会重新开始下一次for循环,所以这里结果就是1 2 3 4 6 7 8 9 10,会发现没有5,因为我们判断当到了5的时候结束了本次循环,就跳出去了,所以没有5。这里我们如果用break,直接永久的终止循环,所以当i=5时,直接跳出循环,结束,所以这里最终调试出的结果是1 2 3 4。2、此时如果在里面嵌套一个if语句,再回到上面之前说的break和continue的概念。如果我们换成continue。1、打印1-100的数字。

2023-06-10 21:17:11 149

原创 C语言零基础学习笔记 2-getchar的循环运用

问题:调试过程中,发现ret被赋值了10,那么10是从哪个地方来的呢,这里我们尝试一下,发现\n是10,这表明我们在输入密码6666的时候按了回车键,这个回车代表的\n存入了ret,导致我们还没有输入Y/N就直接输出确认失败。因为在输入缓冲区内scanf只读了6666,而后剩下了一个\n,于是后面ret在输入缓冲区读取了\n。那我们怎么解决这个问题,这个时候缓冲区剩下的\n,应该被拿掉。但是最后的问题是,还没有输入Y/N,直接跳转,显示确认失败,我们需要找到问题。这里我们采用一个循环。

2023-06-09 16:47:14 617 1

原创 C程序编程学习笔记 1

本次循环中continue后面的代码不执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口。1、分支语句,如果出现if(nun=5)的情况,其实是赋值而不是判断,应该写成if(num==5),最好的解决办法是,写成if(5==num)2、if和else,其实不能根据和谁对齐就判断和谁是一对,一般来说,else是和他最近的if是一对,而不是看他和谁对齐。当换成continue这里的结果是1、2、3、4,出现了死循环,break只要遇到break,就停止后期的所有循环,直接终止循环。

2023-06-09 13:23:45 71 3

简单教学内容片段-指针-减去指针实现求出字符串长度

简单教学内容片段--指针-减去指针实现求出字符串长度

2023-08-24

C语言零基础手把手三子棋代码完整版

C语言零基础手把手三子棋代码完整版,玩家和电脑轮流在3x3的棋盘上下棋,目标是先将自己的棋子连成一行、一列或一条对角线获胜。规定:先连成一条直线(3 个棋子)的玩家获胜,直线是行,列,对角线均可。若在棋盘下满时仍未分出胜负,则结果为平局。

2023-08-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除