结构体
结构体类型的定义
结构体变量的定义
结构体的嵌套
取结构体里的成员变量
举例说明:学生成绩管理系统中,数据元素学生有很多的数据项,也称属性(如:学号,姓名,成绩等),单独用某一种基本数据类型都无法完整定义它于是我们只能使用结构体类型(他是多种基本类型的组合,即:一种自定义的符合数据类型)
结构体类型的定义
struct 结构体类型名
{
成员列表;
}
举例
struct student //定义结构体类型:类型名为struct student 内含若干成员变量
{
int num; //定义学号成员变量
char name[10];//定义姓名成员变量
float score;//定义成绩成员
};
问:用基本类型一个一个定义数据元素学生的各个数据项,是否可以?
可以,任然可以把该学生的每一个数据都保存,但存储上无法体现数据项之间内在的关联性
结构体变量的定义
方法1,在定义结构体的类型时,定义结构体的变量(即:一起定义)
struct student
{
....
} student1,student2; //定义两个结构体变量: student1和student20
方法2先定义结构体类型,再定义结构体变量(即:分开定义)
struct student
{
....
};//先定义结构体类型
struct student student1,student2;//再定义结构体变量
小结:方法1的缺点在于(结构体类型定义的)代码重用性差!!
结构体的嵌套
事先对"日期"这种结构体类型进行定义内含3个成员(year,month,day)
struct date
{
int year;
int month;
int day;
};//先定义结构体类型:struct date
然后在"学生"结构体类型中添加birthday这个成员变量
struct student
{
int num
int name[10];
floot score;
struct date brithday;
};//定义"学生"结构类型:struct student
struct student st[60];//定义结构体数组变量:数组名为st,长度60
struct student *pst;//定义结构体指针变量pst,可以保存一个
struct student 结构体类型变量地址
如何取出结构体变量中每个成员变量
方法1通过"结构体变量名方式"取成员:结构体变量名,成员名
程序例:
#include <stdio.h>
struct student //定义结构体类型:struct student(约含3个成员)
{
int num
int name[20];
char sext;
};
int main (void)
{struct student st = {101,“香龙”,’F‘}}
//定义结构体变量st 1 并初始化
//方法1 结构体变量名 成员名
st1.num = 102;
printf("%d\n",st1.num)
//方法2:通过"结构指针变量名方式"取成员
struct studnet *p;//先定义结构体类型的指针变量:p
p=&st1;
p->num=103;//等价于:p.num=103
printf("%d\n",p->num);
return 0; }
P保存了st1的地址;
p就指向了st1;
p->成员名就是st1.成员名