结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
描述一本书,这本书包括:书名+出版社+目录+作者等信息
这些都是复杂的对象,C语言就给了自定义类型的能力
自定义类型中的有一种叫:结构体struct
结构体是把一些单一类型组合在一起的做法
例如,我们现在来描述一个人,他有名字+年龄+性别+学号 这几项信息
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
int main()
{
return 0;
}
我们要盖一个房子,struct Stu
就是我们的图纸,创建一个结构体对象s
,在里面根据图纸来填写数据
结构体的初始化
//打印结构体信息
struct Stu s = {
"张三", 20, "男", "20180101"};
可以把
struct Stu
当成数据类型,s就是创建用来存放数据的结构体对象
,s
里面的数据就是成员名
在struct Stu
不使用的时候,里面的那些类型是不会开辟空间的
打印
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
要打印s里面的信息,要按照类型的顺序来打印,
"张三", 20, "男", "20180101"
对应的%s,%d,%s,%s
,顺序是不能颠倒的,且要按照结构体对象.成员名
的形式
还有一个打印的方法
//
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).id);
ps
是结构体指针变量,这里就是指针那里的方法,不过有点麻烦,可以直接用->
操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);
ps->name
的意思就是ps
指向s
中的成员name
,和(*ps).name
的意思一样