013结构体1.docx
《013结构体1.docx》由会员分享,可在线阅读,更多相关《013结构体1.docx(7页珍藏版)》请在冰豆网上搜索。
013结构体1
一、结构体
1.为什么要使用结构体
一辆银灰色的车牌号为湘A00001的雪弗兰轿车以80km/h的速度行驶。
在这里由车牌、车名、型号、车速共同构成了对一辆轿车的描述,在数据处理中,这四个属性应该当作一个整体来处理。
但它们不属于同一类型,无法用数组来容纳,而用单个变量来分别代表各个属性,又难以反映出它们的内在联系。
C语言提供结构体(structure)数据结构,将不同数据类型、但相互关联的一组数据,组合成一个有机整体使用。
结构类型定义
2.结构体类型特点
(1)定义一个结构体类型,系统不会为其分配内存单元。
定义一个类型只是表示这个类型的结构,即告诉系统它由哪些类型的成员构成,各占多少个字节,各按什么形式存储,并把它们当作一个整体来处理。
(2)结构体类型由多个成员组成,成员的数据类型可以是整型、实型、字符型、数组,也允许是另一个已经定义的结构体类型。
(3)结构体类型是根据设计者的需要来组合的。
(4)结构体类型系统没有预先定义,凡需要使用结构体类型数据的,都必须在程序中自己定义。
3.结构体的定义
格式:
struct结构类型名/*struct是结构类型关键字*/
{数据类型成员1;
数据类型成员2;
…………
数据类型成员n;
};/*此行分号不能少!
*/
例:
定义一个描述日期的结构体。
structdate
{
intyear,month,day;
};
例:
定义一个描述上面车辆信息的结构体。
例:
定义一个描述学生信息的结构体(年龄表达)。
structstudent
{
charnum[13];
charname[9];
charsex[3];
intage;
charaddr[60];
};
职工信息:
职工号,姓名,性别,职位,电话,工资
structemployee
{
charcode[3];
charname[9];
charsex[3];
charposition[15];
charphone[15];
doublesalary;
};
例:
定义一个描述学生信息的结构体(出生日期表达)。
4.结构体的使用
定义结构体变量(定义结构体同时定义变量,定义结构体之后定义变量)
定义结构体变量时,分配存储空间,大小为各成员所占空间之和。
5.结构体变量的初始化
定义的同时初始化,定义之后初始化(结构体成员的引用)
structdate
{
intyear,month,day;
}d={2009,12,15};
structdate
{
intyear,month,day;
};
structdated={2009,12,15};
structdate
{
intyear,month,day;
}d;
.成员运算符
d.year=2009;
d.month=12;
d.day=15;
structstudent
{
charnum[13];
charname[9];
charsex[3];
intage;
charaddr[60];
}stu={“200906111101”,”张三”,”男”,18,“四川省成都市温江区天府路”};
#include
#include
intmain()
{
structstudent
{
charnum[13];
charname[9];
charsex[3];
intage;
charaddr[60];
};
structstudentstu={“200906111101”,”张三”,”男”,18,“四川省成都市温江区天府路”};
printf(“%s%s%s%d%s\n”,stu.num,stu.name,stu.sex,stu.age,stu.addr);
return0;
}
structstudentstu;
strcpy(stu.num,”200906061101”);
strcpy(stu.name,”张三”);
strcpy(stu.sex,”男”);
stu.age=18;
strcpy(stu.addr,”中国”);
#include
#include
intmain()
{
structstudent
{
charnum[13];
charname[9];
charsex[3];
intage;
charaddr[60];
};
structstudentstu;
printf(“输入学号姓名性别年龄家庭住址\n”);
scanf(“%s%s%s%d%s”,stu.num,stu.name,stu.sex,&stu.age,stu.addr)
printf(“%s%s%s%d%s\n”,stu.num,stu.name,stu.sex,stu.age,stu.addr);
return0;
}
例:
定义一个描述日期的结构体。
例:
定义一个描述上面车辆信息的结构体。
例:
定义一个描述学生信息的结构体(年龄表达)。
例:
定义一个描述学生信息的结构体(出生日期表达)。
二、结构体数组
1.定义
2.初始化
3.使用
三、结构体指针
*——间接运算符
->——指向运算符
三、链表
四、共用体(联合体)
1.定义
union共用体名
{
数据类型成员1;
数据类型成员2;
……
};
2.共用体变量的引用
五、枚举
1.定义
enum枚举名{成员列表};
枚举元素为常量,默认第一个成员为0,以后成员依次加1。
可以改变默认值。
枚举类型的用法
#include
enummonths{JAN=1,FEB,MAR,APR,MAY,
JUN,JUL,AUG,SEP,OCT,NOV,DEC};
main()
{enummonthsmonth;
char*mname[]={"","January","February",
"March","April","May","June","July",
"Auguest","September",
"October","November","Dcember"};
for(month=JAN;month<=DEC;month++)
printf("%2d--%-10s\n",month,mname[month]);
}
六、typedef定义类型
七、作业
八、预习
位运算、文件