找回密码
 立即注册
查看: 104|回复: 0

Ai8051U第八集

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-05-06 11:26:54
已绑定手机

11

主题

16

回帖

187

积分

注册会员

积分
187
发表于 2025-2-5 11:00:27 | 显示全部楼层 |阅读模式
来到Ai8051U的第八集,这一集感觉比较长,我看本节课程讲了大量的C语言的语法,例如定义、for循环、结构体、头文件实现等等。
首先冲总先讲解了同学在开发过程中遇到的错误,这些错误对于新手都是经常犯的,必经之路,所以不必惊慌。问题的根源就是没有熟练掌握这门语言,解决方法也比较简单,就是平时多加联系,其实编写程序也是一种习惯,跟我平时说话一样,刚开始的小时候总会考虑那说错了,经常说就不会用脑考虑了。
接着讲解了计时器终端的的方式,采用了一个定时器实现了三个等的不同频率闪烁,并且引入了数组的概念,以及数组的遍历(循环遍历),这里面要强调一点,数组的第一个元素索引是0,为什么不是1,因为计算机的计数是二进制的,用0开始没什么不好,而我们习惯了用1开始,自然觉得用1比较好,但是你知道,计算机不用0开始,那会浪费一个资源,这对计算机的楚楚可怜的资源来讲太浪费了,因此计算机的索引采用从0开始。


接着冲总采用了新的排灯方案
截图202502050953163545.jpg
这块多说一句,这里冲总采用了一个8x8的行列式,就是我们平时说的matrix(矩阵),学习计算机后期会经常需要矩阵的操作,例如3D投影的变化,所以没有数据基础的朋友,可以学习下高等代数,里面会有这方面的讲解,但是对于平常就业来讲,矩阵基本上是用不上的,因为现在座IT大部分都是数据库的增删改查,做个列表等等,所以要求计算机的水平比较低,而如果坐数据分析,复杂的UI交互这些就不行了,所以计算机学习并不简单,关键看你怎么用。
另外请看下图:
截图202502051003306556.jpg
这里面有两个知识点,第一个是P0的8个引脚可以批量操作,第二个是字节可以通过~符号取反。
接着,冲总又讲解了按钮导致的死锁问题如何处理,这里的经验值得借鉴。
截图202502051013598181.jpg
接着介绍了结构体的概念,这个非常重要,C语言在编写规模大的程序时候,不能仅仅采用散量,为了保证数据的封装性,建议采用结构体(struct)封装数据,如下图:
截图202502051033085338.jpg
定义方法:
typedef struct{
  //定义变量名称及类型
  //定义方法名称及类型
} 自定义结构的名称;

这种方法实际上是重新定义结构体,如果是单纯定义结构体,可以使用这种:

struct 自定义结构体的名称{

  //定义变量名称及类型
  //定义方法名称及类型

};
但是这种方法定义不知道这款单片机的编译器是否支持

例外下载器的版本配置要注意版本:
截图202502051059512890.jpg

最后介绍几个关键词 typedef typeof sizeof

在C语言中,typeof、typedef 和 sizeof 是三个不同的关键字,它们各自有不同的用途和作用。下面我将分别解释每个关键字的作用和用法。

1. sizeof

sizeof 是一个操作符,用于获取数据类型或变量所占的字节大小。它可以用于基本数据类型、结构体、联合体、数组等。

用法示例:

#include <stdio.h>

int main() {
    int a = 10;
    printf("Size of int: %lu bytes\n", sizeof(int));
    printf("Size of a: %lu bytes\n", sizeof(a));
    return 0;
}
2. typedef

typedef 用于为现有的类型定义一个新的名称(别名)。这常用于简化复杂数据类型的声明,或者为基本数据类型定义更有意义的名称。

用法示例:

#include <stdio.h>

typedef unsigned int uint;
typedef struct {
    int x;
    int y;
} Point;

int main() {
    uint a = 10;
    Point p = {1, 2};
    printf("Value of a: %u\n", a);
    printf("Point p: (%d, %d)\n", p.x, p.y);
    return 0;
}
3. typeof (GNU C Extension)

typeof 是GNU C扩展中的一个操作符,用于获取表达式的类型,并可以用来定义该类型的变量。这在某些情况下非常有用,尤其是在需要基于表达式类型定义变量时。注意,typeof 不是标准C的一部分,但在支持GNU C扩展的编译器(如GCC)中可用。

用法示例:

#include <stdio.h>

int main() {
    int a = 10;
    typeof(a) b = 20; // 使用typeof定义与a相同类型的变量b
    printf("Value of a: %d\n", a);
    printf("Value of b: %d\n", b);
    return 0;
}

注意: 使用 typeof 需要编译器支持GNU C扩展,例如GCC。如果你使用的是标准的C编译器(如Clang或MSVC),你需要使用其他方法来实现类似的功能,例如使用 _Generic 或者在C++中使用 decltype。

总结:

sizeof 用于获取数据类型的字节大小。

typedef 用于为类型定义新的名称。

typeof(GNU C扩展)用于获取表达式的类型并基于此类型定义变量,但不是标准C的一部分。在标准C中,你可能需要其他方法来实现类似的功能。


好的 最后感谢冲总的讲解。


回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-6 13:35 , Processed in 0.111116 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表