- 博客(11)
- 收藏
- 关注
原创 数组地址与数组首元素地址
本文分析了C语言中数组名arr、&arr[0]和&arr的区别。虽然三者打印的地址相同,但类型完全不同:arr和&arr[0]是int指针,&arr是数组指针int()[长度]。指针运算时,arr+1步长为4字节(跳过一个int),而&arr+1步长为20字节(跳过整个数组)。sizeof运算时,sizeof(arr)返回数组总大小,而sizeof(&arr[0])和sizeof(&arr)都返回指针大小(4或8字节)。关键区别在于arr作为数组名在大
2026-03-12 00:06:21
10
原创 C语言学习~指针数组与数组指针
本文介绍了C语言中指针数组和数组指针的概念与区别。指针数组是存放指针的数组(如int* par[3]),其元素是指向整型数据的指针;数组指针是指向数组的指针(如int (p)[5]),指向整个一维数组。文中通过示例代码展示了二者的使用方式:指针数组通过单层解引用访问元素((par[i]+j)),而数组指针需要两层解引用(((p+i)+j))。特别强调二者在语法格式上的区别(括号的重要性)和概念上的不同(指向单个元素地址vs整个数组地址),避免使用时出现混淆。
2026-02-28 22:05:54
131
原创 C 语言实现两个无序数组合并并升序排序(冒泡排序 + 双指针合并)
本文介绍了一个C语言程序,实现了两个无序数组的排序与合并功能。程序首先使用冒泡排序分别对两个数组进行升序排列,然后通过双指针法高效合并两个有序数组。冒泡排序通过相邻元素比较交换,每轮将最大值"冒泡"到数组末尾;双指针合并法则避免了重复排序,时间复杂度更低。代码包含数组输入、冒泡排序、数组合并三个主要模块,并详细注释了冒泡排序的内外层循环原理。该程序展示了数组处理、排序算法和指针操作等C语言核心知识点。
2026-02-26 20:58:36
141
原创 C语言学习~深度了解数据在计算机内存中的存储
本文主要探讨了C语言程序在内存中的存储结构及数据存储方式。首先分析了VS编译器下的内存分配,详细介绍了栈区(存放局部变量、形参等)、堆区(动态内存管理)和静态区(全局/静态变量)的特点及代码示例。其次对比了debug和release版本下数据存储的差异,最后解析了不同类型数据在内存中的存储形式,包括二进制补码表示和十六进制显示方式。文章通过具体代码示例展示了各内存区域的使用方法,并强调了堆内存管理中的注意事项(如内存泄漏检查、野指针避免等)。
2026-02-05 18:47:03
282
原创 2022VS及以上版本的scanf函数的使用,引发的错误导致编译器运行不了
摘要:针对Visual Studio 2022及以上版本禁用scanf函数的问题,提供三种解决方案:1)改用微软推荐的scanf_s函数(需注意字符串读取的参数差异);2)在项目属性中添加_CRT_SECURE_NO_WARNINGS宏定义;3)在代码最顶部添加#define _CRT_SECURE_NO_WARNINGS预处理指令。第三种方案需确保该指令位于所有头文件之前。这些方法都能解决C4996编译错误,用户可根据需求选择最适合的方案。(149字)
2026-01-16 15:08:01
66
原创 吃透 C 语言隐式类型转换:char 与 int 的那些事儿
C 语言中char默认是,占用 1 个字节(8 位),取值范围是-128 ~ 127(无符号 char 是0 ~ 2558 位的最高位(第 7 位,从 0 开始计数)是:0 表示正数,1 表示负数。例如: 在char类型变量存储中,8: (8的符号位是0,代表则是正数) 0000 1000-8:(8的符号位是1,代表则是负数) 1000 1000。
2026-01-15 14:28:00
300
原创 WIFe模块ESP-01S与onenet云平台通信
本文介绍了基于STM32 HAL库驱动ESP-01S模块与OneNet云平台的物联网通信实现方案。主要内容包括:硬件连接配置(ESP-01S、DHT11等模块)、STM32 HAL库初始化设置、OneNet平台产品创建与设备配置、AT指令调试方法,以及数据上报与指令接收的完整通信链路实现。重点讲解了如何通过JSON格式实现多传感器数据上传(温湿度、LED状态等)和云端指令解析控制(风扇、蜂鸣器等设备)。同时介绍了通过HBuilderX开发小程序实现数据可视化显示的方法。本方案为物联网应用开发提供了完整的实现
2026-01-06 16:01:57
1034
原创 C 语言实现经典排雷游戏 —— 从代码到玩法全解析
排雷作为一款经典的单人益智游戏,相信大家都不陌生。其核心玩法是在隐藏着地雷的网格中,通过点击格子排查地雷,同时根据格子提示的周围地雷数量推断安全区域,最终避开所有地雷即为胜利。本文将分享一个基于 C 语言实现的简易排雷游戏,代码结构清晰、逻辑简单,非常适合 C 语言初学者学习二维数组操作、函数封装及游戏逻辑设计。注:如果想直接使用代码并测试游戏功能,可往下翻,最后有整套代码的复制。
2025-12-23 21:51:01
704
原创 JDY31蓝牙模块和BT24蓝牙模块AT指令的学习
这是BT24蓝牙进入AT模式的条件,很简单,但是像HC-05这种信号蓝牙要想进入AT模式是要在蓝牙上电前长按模块按键,在上电才能进入AT模式,而却HC-05进入AT模式现象是指示灯是每2s闪一次。2.蓝牙模块进入AT模式的硬件条件:这里JDY31连接好引脚后,直接将USB-TTL连接到电脑端口,通过发送AT指令来更改蓝牙的密码、名称、波特率,这里是上电直接进入很简单。,大多数不同型号的蓝牙模块都需要接5V电源,进行AT指令的使用,我们需要用到USB-TTL、JDY31,二者之间连接是。
2025-12-09 22:18:33
740
原创 2025年新的OPEN MV 升级和降级固件版本方式
随着OPEN MV 不断的更新换代,你使用固件版本的不同,那也就意味着你使用openmv库也会有所改变,写代码的格式也会有所变化,接下来我为大家介绍如何对你所使用固件的版本进行升级和降级。这个方式是根据你open MV ide下载版本所对应的固件库的升级,会直接升级到当前Open MV IDE 软件上对应固件的最新版本。DFU文件的使用主要是适用于你的open MV是新的而且没有烧录过固件版本的,这个方式才使用DFU烧录。进行接下来这个操作,是因为你所使用的代码是偏向于之前低版本OPENMV的库。
2025-09-07 13:59:45
254
原创 我这几天烧录程序时频繁出现烧录不进去的情况,并且引起烧录出现问题各式各样,经过我不断解决方法,最后发现电脑上usb接口接触不良会引发各式各样的问题
然后综合上述我的主要问题是:因为USB接口接触不良,导致我第一次的错误,是因为,代码没有按正常的路径途径也就是ST link驱动,他直接通过USB接口通过,也就是说,烧录进去的时候产生差错,导致我芯片自动锁住了,第二次是因为接触不良连锁反应引发了一些内核问题,所以我们在使用我们电脑上的USB接口的时候,要注意整洁保护,时隔多日的时候去给他进行清清灰,避免接口使用不良。
2024-12-07 20:13:25
1125
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅