news 2026/4/18 10:07:17

寒假学习(8)(c语言8+模数电8)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
寒假学习(8)(c语言8+模数电8)

对于STM32F103C8T6集成版进行小升级,加入了光敏电阻,热敏电阻,8个小灯,两个按键,macial口改成了type-c,然后改成了自动下载

然后为了省钱又全部改成直插式的了

#include <stdio.h> #include <stdlib.h> #include <string.h> //定义结构体数据类型 typedef struct Student { int id; char gender; char name[20]; char *adress;//未分配内存空间之前,是野指针 }student; void deepcopy(student *to_stu, student *from_stu) { to_stu->id = from_stu->id; to_stu->gender = from_stu->gender; //错的 //to_stu->name = from_stu->name; strcpy(to_stu->name,from_stu->name); to_stu->adress = (char *)malloc(100); memset(to_stu->adress, 0, sizeof(to_stu->adress)); memcpy(to_stu->adress, from_stu->adress, strlen(from_stu->adress)); } int main() { //定义结构体数据变量 // struct Student stu1 = {.id = 1, .gender = 'M', .name = "Lisi"}; // student stu2 = {2, 'F', "xiaohong"}; // student *stu = &stu2; // printf("stu1.id = %d, stu1.gender = %c, stu1.name = %s\n", (&stu1)->id, stu1.gender, stu1.name); // printf("stu2.id = %d, stu2.gender = %c, stu2.name = %s\n", (*stu).id, stu->gender, stu->name); struct Student stu1 = {1, 'M'}; // printf("please input your message:\n"); // scanf("%d %c",&stu1.id, &stu1.gender); printf("please input your address:\n"); stu1.adress = (char *)malloc(sizeof(char) * 100); scanf("%s",stu1.adress); //结构体成员是数组的不能用“=”来赋值 //stu1.name = "lisi"; strcpy(stu1.name, "lisi"); printf("stu1.id = %d, stu1.gender = %c, stu1.name = %s\n", (&stu1)->id, stu1.gender, stu1.name); printf("address:%s\n",stu1.adress); //结构体变量之间的赋值,浅拷贝问题 student stu2; //= stu1; deepcopy(&stu2, &stu1); free(stu1.adress); stu1.adress = NULL; printf("stu2.id = %d, stu2.gender = %c, stu2.name = %s\n", stu2.id, stu2.gender, stu2.name); printf("address:%s\n",stu2.adress); free(stu2.adress); stu2.adress = NULL; return 0; }
#include <stdio.h> struct Student { int id; char gender; char name[20]; }; //结构体字节对齐是什么 //结构体的内存对齐 //要在最大的数据类型上根据你代码中的注释,我来详细讲解结构体对齐规则: // 结构体对齐规则 // 核心规则: // 对齐值:结构体中最大成员的类型大小(如int为4,double为8) // 成员偏移:每个成员的偏移量必须是其类型大小的整数倍 // 结构体总大小:必须是最大成员大小的整数倍 // 以你的struct Student为例: // struct Student { // int id; // 4字节,偏移0 ✓ // char gender; // 1字节,偏移4 ✓ // char name[20]; // 20字节,偏移5 (5%4=1,不满足) // }; // 问题:name偏移量为5,但应该是4的倍数(因为最大成员是int,4字节) // 内存布局: // 偏移 0-3: id (4字节) // 偏移 4: gender (1字节) // 偏移 5: 填充3字节 (对齐到偏移8) // 偏移 8-27: name (20字节) // 总大小:28字节 // 实际输出:28 // 优化版本(按类型大小从大到小排列): // struct Student { // int id; // 偏移0,4字节 // char name[20]; // 偏移4,20字节 // char gender; // 偏移24,1字节 // char padding[3]; // 填充3字节,总大小28字节 // }; // 注意:这个例子中两种写法大小相同,但通常按大小排列能减少浪费。 int main() { printf("%d\n",sizeof(struct Student)); return 0; }

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { //共用体union union Data { int i; float f; char str[20]; } data; //共用体的特点:所有成员共享同一块内存空间,只能同时存储一个成员的数据 return 0; }
#include <stdio.h> int main() { //关键字volatile的作用 //1.防止编译器优化 //2.防止编译器将变量保存到寄存器中 volatile int i = 0 ; int *p = &i; //取地址为什么会报错: //int *p = &i; //不能去取i的地址,因为i是volatile的,编译器会认为i的值随时可能发生变化,所以编译器会禁止对i的取地址操作 while(1) { printf("i = %d\n",i); } return 0; }
#include <stdio.h> void func(void) { static int i = 0; i++; printf("i = %d\n",i); } int main() { //关键字static的作用 //1.修饰局部变量:静态局部变量,生命周期长,作用域局部 //2.修饰全局变量:静态全局变量,生命周期长,作用域全局 //3.修饰函数:静态函数,只能在定义它的文件中使用 //4.修饰类:静态类,只能在定义它的文件中使用 func(); func(); func(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:09:18

设计客户需求整理工具,录入客户沟通内容,自动提取核心需求,异议点及诉点,生成需求清单,标注优先级,帮销售/运营精准对接客户需求。

1. 实际应用场景与痛点 场景 - 销售/运营在与客户沟通后&#xff0c;需要整理客户需求、异议点和诉求&#xff0c;以便后续跟进。 - 沟通记录通常是语音、聊天记录或笔记&#xff0c;信息杂乱&#xff0c;难以快速提炼重点。 - 手工整理耗时&#xff0c;容易遗漏关键信息。 痛…

作者头像 李华
网站建设 2026/4/18 6:24:47

长尾关键词优化对SEO效果提升的重要性与实践技巧

在数字营销的领域中&#xff0c;长尾关键词优化不仅是提升SEO效果的重要环节&#xff0c;也是吸引精准流量的有效手段。长尾关键词通常由三个到五个词组成&#xff0c;能够明确捕捉用户意图&#xff0c;尤其适合那些有特定需求的用户。通过精确选择并合理布局这些关键词&#x…

作者头像 李华
网站建设 2026/4/18 8:37:27

基于深度学习YOLOv8的道路坑洼识别检测系统(YOLOv8+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 本项目基于YOLOv8目标检测算法&#xff0c;开发了一套专门用于道路坑洼识别的智能检测系统。该系统能够通过实时图像或视频流自动检测并定位道路表面的坑洼、裂缝等缺陷&#xff0c;为道路维护、交通安全和智慧城市建设提供数据支持。项目采用了一个包含3,…

作者头像 李华
网站建设 2026/4/18 4:31:44

人工智能之数字生命-查找方法的方法的讨论

一、先给结论(直接回答你问的) 1️⃣ 方法节点里的条件节点和结果节点要不要共用一个场景节点? 结论:是“同源但不共用指针”。 逻辑上: 结果场景 = 条件场景 + 方法动作的变化 结构上: 必须是两个独立的场景节点树 但它们来源于同一个“抽象场景模板” 👉 换句话说:…

作者头像 李华
网站建设 2026/4/18 9:42:12

MongoDB 固定集合详解

MongoDB 固定集合详解 概述 MongoDB 固定集合(Capped Collection)是一种特殊类型的集合,其大小是固定的,并且按照插入顺序进行数据存储。固定集合在日志记录、缓存场景中非常有用,因为它可以保证集合的大小不会无限增长。 固定集合的特点 固定大小:创建固定集合时,需…

作者头像 李华
网站建设 2026/4/18 7:58:54

人类学习优化算法(HLO)详解:从生物学习到全局优化

文章目录 人类学习优化算法(HLO)详解:从生物学习到全局优化 1 算法概述与生物基础 1.1 生物学习理论与算法起源 1.2 人类学习过程的认知基础 1.3 算法发展历程 1.4 算法基本思想与核心概念 2 算法原理与数学模型 2.1 基本概念与符号定义 2.2 初始化与知识库建立 2.3 随机学习…

作者头像 李华