前言:自定义类型和内置类型
char,int,long,float,double都叫做C语言的内置类型
但是当表达一个人,一本书,一件事情的时候,我们就需要一个复杂的类型,这种复杂的类型,一般就被叫做自定义类型
结构体
结构体类型的声明
1.结构是一些值的集合,这些值被称为成员变量,结构的每个成员可以是不同类型的变量
2.结构体的声明:
通式:struct tag //struct是结构体标签
{
member - list;//成员变量
}variable-list;
举例:
在结构体类型的声明中,定义的变量可以不需要初始化
3.用结构体创建变量以及结构体传参
还是用上面的Stu的结构体变量
由于这两个变量是在main函数中进行创建的,所以被叫做局部变量,当然结构体不仅仅可以创建局部变量,还可以创建全局变量
例如在main函数外面创建的变量以及直接在结构体声明部分创建的变量都被叫做这个程序的全局变量
即s3,4,5,6都被叫做全局变量
4.匿名结构体类型
①单个匿名结构体
在创建结构体的时候,可以不需要给结构体名字,但是必须在声明结构体的同时创建一个变量,如此时的sa
②多个匿名结构体
如果代码这样写是正确的吗?
结果是错误的,在编译器编译两个结构体的声明时,即使两个结构体的成员变量都是一样的,但是编译器会把这两个结构体当做两个不同的变量进行使用,所以在psa = &sa中,编译器认为psa和sa的类型不一样,就好比于把char类型的变量赋值int类型