跳转至

关于NVIC_Doc

本网站对408相关代码整理

感谢XiannYu少说多做同志的Sponsor

感谢Haiheng Yang同志的精神支持🐱🐱🐱

本文所有代码均满足:

  • 包含完整的库引用
  • 数据结构定义
  • 基本可以实现上机运行
  • 代码时间复杂度与空间复杂度分析
  • 更优解法以及实际场景应用

移动设备访问请从左上角点击进入TOC

本文的编号模式

[ 章节顺序代码字母 ]-[ 代码细分类别 ]-[ 序号 ]

代码细分类别:

  • 基本数据结构定义与基本操作——A
  • 基础功能函数切片——B
  • 复杂应用——C

本文的代码、注释以及相关图解由qwen3-coder-480b-a35b-instruct辅助生成,仅核对部分内容。

代码的高亮使用pymdownx.highlight

注意:

  • 安全版本指考虑所有边界、错误、互斥等情况,仅供参考,不建议背诵。
  • 扩展题目与知识的代码未经核对,仅供参考。

更新日志:

  • 2025.08.31 技术上线,将继续完善代码部分。
  • 2025.09.01 完善基础题部分。
  • 2025.09.14 基本完成✅
技术支持: NVIC_Blog

C语言技巧

→与.的区别

基本概念

  • .操作符:用于访问结构体变量的成员
  • ->操作符:用于访问结构体指针指向的成员

使用示例

C
#include <stdio.h>
#include <stdlib.h>

struct Student {
    int id;
    char name[20];
};

int main() {
    // 直接定义结构体变量
    struct Student stu1 = {1, "Tom"};
    printf("ID: %d\n", stu1.id);        // 使用 . 操作符

    // 定义结构体指针
    struct Student *ptr = &stu1;
    printf("ID: %d\n", ptr->id);        // 使用 -> 操作符

    // 动态分配内存
    struct Student *stu2 = malloc(sizeof(struct Student));
    stu2->id = 2;                       // 等价于 (*stu2).id = 2
    strcpy(stu2->name, "Jerry");

    free(stu2);
    return 0;
}

批量赋值数组为0的方法

1. 定义时初始化

C
1
2
3
4
5
// 方法1:全部初始化为0
int arr1[10] = {0};           // 所有元素都为0

// 方法2:部分初始化(未指定的自动为0)
int arr2[10] = {1, 2};        // 前两个为1,2,其余为0

2. 运行时清零

C
#include <string.h>

int arr[10];

// 方法1:memset(适用于整型数组)
memset(arr, 0, sizeof(arr));

// 方法2:for循环
for(int i = 0; i < 10; i++) {
    arr[i] = 0;
}

注意事项

  • int arr[10] = {0}; 是最简洁的批量清零方式
  • memset 适用于所有数据类型,但要注意字节层面的清零
  • 对于非字符数组,推荐使用初始化方式或循环赋值