当前位置:文档之家› c语言第9章结构体

c语言第9章结构体


问题:若结构体是嵌套定义的,空间如何计算?
struct date
{ int year; int month;
stu1所占空间大小为多少?
int day;
};
struct ST { int ID;
30
char Name[10];
char Sex[4];
struct date TimeOfEnter;
int Score_1; int Score_2;
struct ST { int ID;
char Name[10]; char Sex[4]; int TimeOfEnter; int Score_1; int Score_2; int Score_3; int Score_4; }stu1, stu2;
struct 结构体名 {
成员表列; } 变量名表列;
10
9.1 结构体数据类型
以下程序运行的结果是: #include<stdio.h> main( ) { struct date
{ int year,month,day; } today;
sizeof运算用来 求得一个变量 或数据类型在 内存中占内存 空间的字节数。
printf(“%d\n”,sizeof(struct date));
struct ST stu1, stu2;
数据类型
变量名
一旦定义了结构体类型的变量stu1,stu2,它们就具有了 struct ST类型结构,系统为每个变量分配相应的内存,内
存的大小由声明的结构体决定,即结构体中所有成员 占用内存的总和。
6
9.1 结构体数据类型
struct ST { int ID;
C语言的数据类型
基本类型
整型 实型 (浮点型) 字符型 枚举类型
数据类型
构造类型
数组类型 结构体类型 共用体类型
指针类型
1
第9章 结构体、共用体与枚举
❖9.1 结构体 ❖9.2 共用体
构造数据类型
❖9.3 枚举类型
❖ 9.4用户定义类型
2
9.1 结构体
一、问题的提出 经常会碰到一些表格,例如下面的学生成绩管理表格。
8
9.1 结构体数据类型 (形式三)直接定义结构体变量
struct { int year; int month; int day; } birthday;
struct {
成员表列 } 变量名表列;
用无名结构体直接定义 变量只能一次
9
9.1 结构体数据类型
说明:结构体类型与结构体变量概念不同
– 结构体类型: 不分配内存 – 结构体变量: 分配内存 – 结构体类型: 不能赋值、存取、运算; – 结构体变量: 可以赋值、存取、运算;
struct ST { int ID;
char Name[10]; char Sex[4]; struct date TimeOfEnter; int Score_1; int Score_2; int Score_3; int Score_4; }stu1, stu2;
12
9.1 结构体数据类型
1、对结构体成员的引用方法: 结构体变量名 . 成员名 成员运算符 优先级: 1 结合性:从左向右
如:=“张三” gets(stu1. Name); scanf(“%d%c%d%d”, &stu1.ID, &stu1.Sex, &stu1.Score_1, &stu1.Score_2);
学号 姓名 性别 入学时间 计算机原理 C语言 编译原理 操作系统
1 张三 男 2003
95
98
85
78
2 李四 女 2003
92
90
91
86
••••••
3
9.1 结构体数据类型
二、结构体的声明
结构体——是一个或多个可以是相同数据类型、也可以是
不相同的数据类型的变量集合在一个名称下,便于应用的数据
类型。结构体声明的格式如下:
关键字
struct 结构体名
新的数据 类型名
构成结构体 的成员
{
成员表列
}; ;声明结束,不能省略
4
9.1 结构体数据类型
例如对于前面的学生成绩管理例子中,
可以声明如下结构体:
struct ST
ID
{ int ID; char Name[10]; char Sex[4]; int TimeOfEnter; int Score_1; int Score_2; int Score_3;
Name
Sex
TimeOfEnter
Score_1 Score_2 Score_3 Score_4
int Score_4;
};
…..

2字节 10字节 4字节 2字节 8字节
5
9.1 结构体数据类型
注意:此时只是声明了一种新的数据类型,这种数据类型就是 Struct ST,此时并不为其分配空间。
三、定义结构体变量 (形式一) 先声明结构体类型再定义结构体变量
char Name[10]; char Sex[4]; int TimeOfEnter; int Score_1; int Score_2; int Score_3; int Score_4; }; struct ST stu1, stu2;
stu1所占空间大小为多少?
26
7
9.1 结构体数据类型 (形式二)在声明结构体类 Score_4;
}stu1, stu2;
13
9.1 结构体数据类型 四、结构体变量的引用
C语言规定,不能将一个结构体变量作为一个 整体进行输入、输出。
即不可以: printf(“%d%s%d”, stu1); 只能对结构体变量中的成员分别进行引用。
14
9.1 结构体数据类型
stu1.Score_1++;
15
9.1 结构体数据类型 2、结构体嵌套时成员的引用方法:
当结构体成员又属于一个结构体类型,即结构 体嵌套,访问需一级一级到最低级成员。
16
9.1 结构体数据类型
习题:
struct date
struct worker
{ int month;
{ char name[20];
}
6
sizeof(变量名)或sizeof(类型标识符)
11
9.1 结构体数据类型
结构体可嵌套,即结构体成员也可以是结构体。
若表格的形式如下:
入学时间 学号 姓名 性别
年月日
计算机原理
C语言
编译原理
操作系统
则结构体形式如下: struct date {
int year; int month; int day; };
相关主题