- 课程名称:Linux C语言结构体
- 课程链接:https://www.imooc.com/learn/409
- 章节名称:
- 第2章:预处理的那些事
- 2-4 typedef
- 第3章:结构体是干吗滴
- 3-1 结构体的声明与定义
- 3-2 结构体的初始化和引用
- 3-3 结构体指针
- 第2章:预处理的那些事
- 讲师姓名:
雷过就跑
- 时间:2023-02-08 22:30
课程内容
- 与宏相近的语法typedef
- 作用是给变量类型起别名
- 宏定义是不必理会语法的,但typedef是C语言正式语句,必须以分号结尾
typedef int *p
定义一个变量p,是一个指向整型的指针类型p q = NULL;
定义一个q变量,类型是p,也就是类型名p,也就是指向整型的指针,即q是一个指针变量名
- 在预处理阶段,typedef定义的内容不会替换代码对应位置内容
- 在实际编程过程中,使用typedef来为自定义类型起别名,如
typedef unsigned long size_t
,定义一个类型名为size_t,这个类型实质上就是unsigned long
typedef struct Student {...} Stu_t;
给一个结构体定义别名
- 结构体
struct structName {...};
定义结构体struct structName structVariable;
定义一个结构体变量,定义的同时就已经分配好空间,其中struct
关键字可以省略不写- 还可以在定义结构体同时,定义一个结构体变量,但不推荐这种写法
- 也可以定义无名的结构体,在定义后面直接定义变量,这种方法就无法定义其他结构体变量啦
- 结构体成员初始化
{结构体内部成员1的值, 结构体内部成员2的值, 结构体内部成员3的值, ...}
结构体变量.结构体内部成员1 = 1
- 结构体数组
- 还是使用
{}
来为数组赋值,大括号内部值的个数为:数组长度 * 结构体内部成员数量 - 还可以使用大括号内部嵌套大括号来赋值,这种方法,可以不用为所有内部成员赋值,但只能为有顺序的前几个赋值,后几个可以不赋值
- 还是使用
- 结构体指针
struct structName *p = &someStructNameVariable;
(*p).内部成员1
来调用,只是这种写法很难看p->内部成员1
来调用,看起来很优雅,管这种调用叫指向运算符- 结构体指针指向结构体数组
struct structName *p = structArrayName
,数组名就是指向数组地址的指针p++
指针指向数组中的下一个元素
学习心得
这部分学习起来,还可以自己来优化代码,有成就感