1. 结构体是一种自定义的数据类型,也是用来存储多个数据的大容器,只不过结构体要比数组灵活,它可以存储不同类型的数据
2.结构体定义:struct + 结构体名字{大括号中填写结构体成员,多个结构体成员之间通过分号进行间隔} +;(分号必不可少)
如:定义一个学生结构体
struct student {
//结构体成员
int number; //存储学号
char sex ; //存储性别
};//分号是结构体定义的结束标志,必不可少
3.结构类型重定义要用typedef.
(1)
float y; //存储纵坐标
};
typedef struct point point ;
(2)
第二种格式,定义结构体的同时,在typedef 如
typedef struct student {
//结构体成员
char name[20]; //存储姓名
char sex ; //存储性别
int number; //存储学号
}stu;
4.结构体变量的定义
结构体类型= struct + 结构体的名字
结构体变量访问结构体成员的方式,通过结构体变量.结构体成员 stu.number;
结构体变量可以直接赋值.如:
stu xiao = {"xiaocji",'f',10};
stu mm = {0};
mm = xiao;
下面是一个列子:
stu stu1 = {"xiaowu",'f',20};
stu stu2 = {"liuzi",'m',100};
stu stu3 = { "wangwu" ,'f',11};
stu maxScore = {0}; //存储分数最高者
stu minAge = {0}; //存储年龄最小者
1.先找出两个人中分数最高者
maxScore = stu1.score > stu2.score ? stu1 : stu2;
2.在找出分数最高者 和 第三个人中的分数最高者
maxScore = maxScore.score > stu3.score ? maxScore :stu3;
1.先找到前两个人中年龄最小者
minAge = stu1.age < stu2.age ? stu1 : stu2;
2.在找到年龄最小者和第三人中,年龄最小者
minAge = minAge.age < stu3.age ? minAge : stu3;
printf("%s %s",maxScore.name,minAge.name);
这个例子就是能很好的体现:结构体可以直接赋值.
5.结构体嵌套
typedef struct birthday{
int year; //存储年份
int month; //存储月份
int day; //存储天数
}Birthday;
//结构体嵌套,在一个结构体中的结构体成员是另一个结构体类型的变量
typedef struct stu{
char name[ 20 ]; //存储学生姓名
char sex ; //存储学生性别
int age ; //存储学生年龄
float score; //存储学生分数
Birthday birth; //出生日期
}Stu;