结构体
一.结构体基础知识
1.为什么需要结构体
为了表示一些复杂的事物,而普通的基本类型无法满足实际要求
2.什么叫结构体
把一些基本类型数据组合在一起形成的一个新的复合数据类型,这个叫结构体
3.如何定义结构体
关于结构体类型的定义的总结:
一般格式就是;
struct 结构体名(也就是可选标记名)
{
成员变量;
};//使用分号表示定义结束;
//第一种方式
struct Student //定义了一个新的数据类型,并没有定义变量
{
int age;
float score;
char sex;
};
//第二种方式
struct Student2
{
int age;
float score;
char sex;
}st2;
//第二种方式
struct
{
int age;
float score;
char sex;
}st3;
//结构体中的 struct 结构体名 就等同于主函数中的数据类型 如:int double float之类
4.怎么使用结构体变量
赋值和初始化
定义的同时可以整体赋初值
如果定义完之后,只能单个赋值
struct Student st = {80, 66.6, 'F'}; //初始化 定义的同时赋初值
struct Student st2;
st2.age = 10;
st2.score = 88;
st2.sex = 'F';
如何取出结构体中的每一个成员
1.结构体变量名.成员名
2.指针变量名->成员名(常用)
指针变量名->成员名 在计算机内部会被转化为(*指针变量名).成员名的方式来执行
//例子
struct Student st = {80, 66.6, 'F'};
struct Student * pst=&st;//&st不能改成st
pst->age=88;//第二种方式
st.age=10;//第一种方式
|1. pst->age在计算机内部会被转化为(*pst).age,这是一种硬性规定|
|2. 所以 pst->age 等价于(*pst).age 也等价于 st.age|
|3. 我们之所以知道pst->age等价于 st.age,是因为pst->age是被转化为(*pst).age来执行|
|4. pst->age的含义:
pst所指向的那个结构体变量中的age这个成员|
结构体变量的运算
结构体变量不能相加,不能相减,也不能相乘
但结构体可以相互赋值
struct Student
{
int age;
char sex;
char name[100];
}; //分号不能省
struct Student st1,st2;
st1+st2 或 st1*st2 或 st1/st2 都是错误的
st1=st2 或 st2=st1都是正确的
结构体变量和结构体变量指针作为函数形参传递的问题
二.结构体的综合运用
运用指针和结构体创建学生信息管理系统
动态构造存放学生信息的结构体数组:
动态构造一个数组,存放学生的信息
然后按分数排序输出