C语言第11章结构体1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{ unsigned num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
分号不能少
4
§11.2 结构体的定义
一、结构体定义的一般形式:
struct 结构体名 {
成员表列 }; 成员表列的写法:类型标识符 成员名; 可以是我们学过的任何类型 每一个成员也称为结构体中的域
不出现结构体类型名 称为无名结构体
例:struct { int num; char name[20]; char sex; int age; char addr[30]; } x1, x2;
11
几点说明:
1. 类型名与变量名是不同的概念 2.结构体变量占用内存情况:
•各成员按定义顺序连续存储 •长度是该结构体变量中所有成员占内存之和 •可用sizeof运算符求出一个结构体的长度
16
§11.4 访问结构成员
访问结构变量实质上是引用其成员 有两种运算符可访问结构成员
17
struct date { int m;
int d; iny y; }; struct student { long num; char name[20]; char sex; struct date birthday; float score; char tel[15]; } stu1, stu2;
12
例: struct student { int num;
char name[20]; char sex; int age; char addr[30]; };
X1 59个字节
struct student x1; printf(“%d”,sizeof(x1));
……
num(4字节)
……
name[0]
19
【例】按以上定义输入
scanf("%ld", &stu1.num);
/* .高于&*/
scanf("%d,%d,%d", &stu1.birthday.m,
&stu1.birthday.d, &stu1.birthday.y);
8
结构体变量定义:
struct student x1, x2;
类型标识符
则 x1, x2为student 结构型变量,x1, x2可 存放student类型数据。
struct student * p1; struct student studs[30]; p1=&x1;
9
2. 在定义结构体类型的同时定义变量:
函数之内,也可在函数之外;位置决定有效范围;
如:结构体类型1定义;
main( )
{ 结构体类型2定义;
┅; } fun1(┅) { ┅; }
7
二、定义结构体变量
有三种方法可用来定义结构体变量: 1. 先定义结构体类型再定义结构体变量
例: struct student { int num; char name[20]; char sex; int age; char addr[30]; };
定义形式
struct 结构体名
{ 成员表列
} 变量名表列;
例:struct student { int num; char name[20]; char sex; int age; char addr[30]; } x1, x2,*p1,studs[20];
10
3. 直接定义结构类型变量
定义形式 struct { 成员表列 } 变量名表列;
5
如:struct date
{ int year; int month; int day;
};
结构体名
成员表列 域
6
注意:
1.这只是定义一种新类型的方法,尚未定义变量。
struct date 是一个类型名,类似于int
2.struct –––关键词(保留字),表示定义一种结构体
类型。 3.一个C程序可定义多个结构体类型;定义的位置可在
18
圆点运算符
引用形式:结构体变量名 . 成员名 其中:成员运算符’ . ’ : 一级,自左而右;
stu1.num 引用结构体变量stu1的num成员; stu1.name 引用stu1的name成员(字符指针); stu1.name[i] 引用name成员的第i个元素; stu1.birthday.y 只能对最低级成员进行引用;
……
name[19] sex(1字节) age(4字节)
……
addr[0]
……
addr[29]
20字节 30字节
13
3. 一个结构体类型的变量可以是另一个结构ຫໍສະໝຸດ Baidu的成员
struct date
{ int m;
int d; iny y;
num
}; struct student
name
{ long num;
第十一章 结构体与共用体
本章目标 1.理解结构体,共用体的数据类型 2.学会定义结构体、共用体的数据类型 的变量 3.能够正确使用结构体、共用体的成员
§11.1 引言
已了解的数据类型:
整型
浮点型 简单数据类型
字符型
数组
用户定义的数据类型
特点:所有的元素都是同一种类型
指针型
存在的问题:难以处理较复杂的数据
2
如:建立一份学生档案,对每一个学生至少 需要以下一些信息。
学号(unsigned no) 姓名(char name[20]) 性别(char sex) 年龄(int age) 成绩(float score) 地址(char ddr[30])
3
C 程序可将上述数据的集合定义为一种结构体类型:
struct student
15
一、定义结构体的同时定义变量并初始化 如:struct student { unsigned No; char name[20]; float score; } x1={0001,”LiMing”,85.5};
二、定义完结构体后,定义结构变量并初始化
struct student x2={0002, "Li Ming ", 85.5};
sex
char name[20];
m
char sex;
birthday d
struct date birthday; float score;
y score
char tel[15];
tel
} stu1, stu2;
成员
4
20
共 1 56
字 12 节
4
15
成员字节
§1 1.3 结构体变量的初始化
结构体变量的初始化就是指在定 义结构体变量的同时给该变量赋初值。
相关文档
最新文档