C语言相关知识点备忘、整理
学习c语言及嵌入式时候的一点备忘整理先发一下,以后再修改
某些小点
“\”c语言续航符,后面什么都不能有直接回车
unsigned 为无符号类型。将最高位的符号位取消,变为数据位,如 ±16位 变为 32位。
typedef unsigned int uint32_t; 其中u表示无符号,int为整型,32位,t为typedef 自行定义的。
1||(m=9);由于1或上任何输出为1,故m=9未执行
结构体
“.”—的
“->”—指向…的
struct node s;
s.name // 结构变量访问成员的方式
struct node * p;
p->name // 结构体指针访问结构体成员的方式
(*p).name // 这样也可以, 一般人不这样用
使用结构体,得到初始地址,按照其内的元素所占的位/字节,访问各个位置。
struct是结构体的关键字,用来声明结构体变量,如:
struct student {
char num[10];
char name[20];
int age;
};
typedef是用来定义新的类型名来代替已有的类型名,可将上面的结构体定义如下
typedef struct student{
char num[10];
char name[20];
int age;
}stud;
也就是说,将原来的struct student 重新定义为 stud;
举个例子:
如上面的方法定义了结构体student时,如果在主函数中声明结构体变量时,应按如下方法 struct student stu[10];这样就声明了一个结构体数组,如果开始定义时用typedef,那么就可以直接用 stud stu[10]来声明,这就他们的区别。
指针
几级指针就往回倒几次。
typedef
typedef 使其它东西可以用你自定义的名字进行使用
例如:
typedef uint32_t int;
uint32_t a; ⟺ \iff ⟺ int a;
enum枚举
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
此时GPIOSpeed_TypeDef 定义的东西的值只能为定义的里面的值(GPIO_Speed_10MHz、GPIO_Speed_2MHz、GPIO_Speed_50MHz),如果里面有的变量没有给赋值,则默认是递增的,如GPIO_Speed_10MHz是1,则GPIO_Speed_2MHz就是2 ,GPIO_Speed_50MHz就是3。
地址
一个地址指向一个字节(8位)
当定义的指针是32位时,如unsigned int* p=0x40000000,它会取出以此开始的4个字节(32位数据)。