嵌入式团队结构体&链表培训
结构体
从基本数据类型到抽象数据类型
由前面我们学习的知识可知,C语言规定了一些基本数据类型,比如int
、long
、float
、char
等,但是这些基本数据类型在描述一些比较复杂的事务的时候就显得有些不足了,这就引出了我们今天学习的结构体,它允许用户自定义数据,把一些不同类型的数据看成一个整体。这也蕴含着面向对象的思想。
结构体的定义
在C语言里我们怎样描述一个学生的信息呢?这个学生包含了姓名,年龄,性别,学号这些属性。
我们可以抽象出这样的一个结构体
struct student{
char name[32];//姓名
int age;//年龄
char gender;//性别
long long id;//学号
};
由此可见,结构体就是把一些基本类型的数据组合在一起,把他们当作一个整体,赋予其新的意义。
结构体的三种定义方式
1、先声明结构体,再定义
struct 结构体名
{
数据类型 变量名1;
数据类型 变量名2;
...
数据类型 变量n;
};//注意大括号外面有一个分号
eg:
#include <stdio.h>
struct student{
char name[32];//姓名
int age;//年龄
char gender;//性别
long long id;//学号
};//先声明
int main(){
struct student st1;//再定义
st1.id = 1001;//结构体中变量的访问
printf("%d",st1.id);
return 0;
}
1、在声明结构体的同时定义结构体变量
#include <stdio.h>
struct student{
char name[32];//姓名
int age;//年龄
char gender;//性别
long long id;//学号
}st1;//声明同时定义
int main(){
// struct student st1;
st1.id = 1001;
printf("%d",st1.id);
return 0;
}
3、使用typedef定义数据类型
关键字typedef用于为系统固有的或者程序员自定义的数据类型定义一个别名。数据类型的别名通常使用大写字母。
eg:
typedef int INTEGER;
这样就为int定义了一个新的名字INTEGER,int与INTEGER是一个意思,是完全等价的。
所以,我们当然也可以使用typedef来为结构体定义一个别名,让我们使用更加方便。
eg:
#include <stdio.h>
typedef struct student{
char name[32];//姓名
int age;//年龄
char gender;//性别
long long id;//学号
}STUDENT