目录
# 定义和使用
· 自行建立结构体类型
C语言中有各种类型数据,例如 int,double,float,char等等等等。
若有一组类型不同的数据,是不能直接存储在数组之中的,这个时候就需要使用结构体了
C语言允许自行建立由不同类型的数据组合而成的数据结构,称之为结构体
· 定义一个结构体类型变量
1)先声明再定义
结构体类型名 结构体变量名
2)声明同时定义
struct 结构体名
{ 成员列表
} 变量名列表 ;
3)不指定类型名
struct
{ 成员列表
} 变量名列表 ;
*指定了一个无名的结构体类型 (较少用)
· 初始化和引用
*对结构体变量初始化(不是对结构体类型初始化)
struct block //声明结构体类型
{ int num ; //以下为结构体的成员
char name ;
char sex ;
char address [20] ;
} a = { 2023000001 , " zhang san ", " M " , " 123 yuehai street " } ; //定义结构体变量a并初始化
1)引用方式:
结构体变量名.成员名
*注意不能用结构体变量名代表所有成员
2)结构体的运算:
结构体成员可以进行运算
其类型决定了可以进行的运算
3)结构体的相互赋值:
相同类型的结构体之间可以互相赋值。
# 结构体数组
· 定义一个结构体数组
struct 结构体名
{ 成员列表 } 数组名 [ 数组长度 ]
· 初始化
struct 结构体名
{ 成员列表 } 数组名 [ 数组长度 ] = { 初值列表 };
# 结构体指针
· 指向结构体变量的指针
例子:
struct students * p ;
· 引用
1、* p. num
2、stu.num
3、( * p ).num
4、p -> num
以上四种写法等价#
· 指向结构体数组的指针
struct Student //声明结构体类型struct Student
{ int num;
char name[20];
char sex;
int age;
};
struct Student stu[3] = { {10101," zhangsan ",'M',18} , {10102,"Zhang Fang",'M',19} }
//定义结构体数组并初始化
int main() {
struct Student *p ; //定义指向struct Student结构体变量的指针变量
for ( p = stu ; p < stu+3 ; p++ )
printf ("%5d %-20s %2c %4d\n",p->num , p>name , p>sex , p>age );
}