【STM32】C语言基础补充

学习过程中发现自己好些需要用到的C语言语法、特征都不太熟练了,特意记录一下,免得忘记了,以后遇到了新的也会继续更新······

目录

[1 全局变量](#1 全局变量)

[2 结构体](#2 结构体)

[3 静态变量](#3 静态变量)

[4 memset()函数](#4 memset()函数)

[5 使用8位的存储器存16位的数](#5 使用8位的存储器存16位的数)


1 全局变量

这里指的全局变量,即可在另一.c文件中使用的变量,例如在某BSPxx.c中定义了全局变量flag,但在main.c中也需要用到这个变量,这时就需要将变量声明为外部变量了。

做法:在BSPxx.h中声明该变量为extern变量,如:

cpp 复制代码
extern uint_8t flag;

2 结构体

定义一个结构体时,最好给他一个初始化的值{0},否则其结构体变量可能会出现随机的数。

3 静态变量

静态变量的定义在程序中只会被执行一次,哪怕程序多次调用其定义语句(例如其定义语句处于函数中时)。可用于实现一些状态变量的记忆。如下图为按键标志的记忆。

4 memset()函数

用于初始化变量,万能。所有变量都适用,直接对内存进行操作,因此更加快速。

  • 使用方式:

    cpp 复制代码
    void *memset(void *s, int c, unsigned long n);
  • 功能:
    将指针变量s所指向的前n字节的内存单元用一个"整数"c替换,注意c是int型。s是void*型的指针变量,所以它可以为任何类型的数据进行初始化。

  • 需要
    导入string头文件# include <string.h>。

5 使用8位的存储器存16位的数

  • 思路:
    将16位的高8位和低8位分别存在两个数中,在支持16位的程序中对高8位的数据进行左移8位,并将其与低8位的数据进行或操作。
  • 注意!
    8位的数据读到支持16位的程序中时需使用16位的数据类型存储,否则移位将丢失数据。
  • 示例
相关推荐
@yanyu6665 小时前
C编译器安装与第一个C程序
c语言·开发语言
山下梅子酒2255 小时前
洛谷-入门-B2070
c语言
Logic1015 小时前
C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
MI_farmer7 小时前
Anaconda 安装在 D 盘但虚拟环境跑到 C 盘,以及 Conda PermissionError: WinError 5 的解决方法
c语言·开发语言·conda
心中有你02149 小时前
C语言 二叉搜索树(BST)超详细完整实现(插入+查找+删除+三种遍历+内存释放)
c语言
神仙别闹9 小时前
基于C语言实现 TINY+ 编译器
c语言·开发语言·数据库
共享家952710 小时前
C语言-408
c语言·开发语言
ACP广源盛1392462567312 小时前
接口适配方案选型|GSV6125@ACP HDMI2.0 转 Type‑C/DP1.4 桥接芯片工程评估
大数据·c语言·开发语言·硬件架构·硬件工程·国产芯片
芯祥联15 小时前
STM32 上跑 MQTT 怎么选?嵌入式 MQTT 客户端 C 语言实现对比
c语言·stm32·单片机·嵌入式硬件·网络协议·开源·broker
Escalating_xu1 天前
【C 语言】深入理解指针(1·下):指针运算、野指针、assert 与传址实战
java·c语言·开发语言