假如我们要描述一个学生需要包括学生的姓名、班级、学号等等,这时单一的内置类型是不够的。C语言为了解决这个问题,增加了结构体这种自定义类型,让程序员创造适合的类型。
结构:一些值的集合,这些值称为成员变量。
结构的每个成员可以是不同类型的变量,如:数组、指针,甚至是其他结构体。
要掌握结构体的用法我们要知道结构是如何声明的,结构体变量是如何定义和初始化的。
例:描述一个学生包括名字,年龄,性别和学号。
首先我们要声明结构体
struct Stu//结构体类型的声明,struct是定义结构体的关键字,不能被遗弃
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
};//分号不可缺
对结构体类型的理解:结构体类型相当于内置类型(int,char,float等等),是变量属于什么类型的声明。如:int a 和struct Stu b;对于a变量我们会说a是一个整型,类型为int。而对于b变量我们会说b是结构体变量,类型为struct Stu。
接着要对结构体变量进行定义和初始化
结构体变量的定义和初始化有两种:一种在声明结构体的时候定义结构体变量并且初始化,另一种是在声明结构体的之后定义结构体变量并且初始化
struct Stu
{
char name[20];
int age;
char sex[5];
char id[20];
}p1={"李四",13,"man","12345"};//定义结构体变量p1并且初始化;
struct Stu p2={"王五",15,"man","123456"};//定义结构体变量p2并且初始化;
结构体嵌套结构体的变量也是一样初始化,这里就不详细解释。
我们在结构体变量定义和初始化之后肯定要对结构体进行访问。对结构体的访问有两种:
1.结构体成员的直接访问。使用方式为:结构体变量.成员名
2.结构体成员的间接访问。使用方式为:结构体指针->成员名
就比如对于p1结构体变量的年龄初始化的时候并不是p1的真实年龄,这时我们要进行更改为其真正年龄16岁,这时我们就可以通过结构体访问进行更改:直接访问的方式更改:p1.age=16;
间接访问的方式更改:&p1->age=16;
对于结构体的初始化我们也可以通过直接访问的方式进行初始化,struct Stu p3={.name="李华",.age=14,.sex="man'',.id=''14555''};