文档详情

C语言程序设计(第7章).ppt

发布:2017-02-11约1.96万字共60页下载文档
文本预览下载声明
莆田学院现代教育技术中心 2004年3月 第七章 结构体与共用体 本章主要内容 本章介绍:如何自己构造数据类型(构造型数据) 结构体 内存分配函数 共用体 枚举类型 类型定义 C(C++)数据类型 一、结构体 1.概述 数 组 是构造类数据,其数组元素必须是同一数据类型的。 结构体 也是构造类数据,但其成员可以是任何类型的。 构造类型使用户可以象处理单个变量一样来处理复杂的数据结构。 使用结构体的一般步骤 根据问题的要求定义一个结构体类型 用自己定义的结构体类型定义结构体变量 在程序中使用结构体变量处理问题 比较普通变量的情况: 用系统给定的数据类型定义变量 在程序中使用变量处理问题 如何定义结构体类型? 一个示例 小结:什么是“结构体类型”? 用户自己定义的构造型数据类型 由若干数据项(成员)组成 同一结构体中的成员可以具有不同的数据类型 注意成员定义与普通变量定义的区别: 成员定义时——不为其分配内存 变量定义时——为其分配内存 结构体类型的特点: 组成结构体的成员本身必须是一种已有定义的数据: 基本类型成员(整型/字符型/实型) 指针类型成员 数组类成员 其他构造类成员(包括已定义的另一种结构体) 注意:成员≠变量,故成员名可与变量名同名 结构体类型可以有千千万万种,表示由若干不同数据项组 成的复合类型。 定义结构体类型时,系统不会为该结构体分配内存(只是定义类型,而非变量声明) 2、结构体类型变量的定义 定义了以上结构体类型后,struct student 相当于标准数据类型关键字char, int ,float…我们可以用它来定义“结构体变量”。 ① 在结构体类型定义后,用 struct 结构体名 复合词定义 struct 结构体名 { … }; struct 结构体名 变量名1,变量名2,… 变量名n; 如:struct student a,b[30],*p; a 为struct student类型的变量 b 为struct student类型的数组(每个元素都是一个结构 体变量,都有众成员) p 为指向struct student类型的指针变量 还有两种合二为一方法…… 【例二】定义结构体类型的同时定义结构体类型变量。 main() { struct student { int number; char name[6]; char sex; int age; char address[20]; } a,b[30],*p; …… } 其他有关知识… 实际使用中,还可以使用以下形式: #define STU struct student STU stu1,stu2; 比较一下两种变量定义方式的异同: int a,b,c; 定义三个整型变量,每个变量占二个字节,可单独赋值。 struct student a,b,c; 定义三个结构体类型变量,每个变量下有若干“成员”。其占用的内存长度等于各成员项长度之和。 示例 示例 【例五】若有以下定义,则正确的赋值语句为 。 struct complex { float real; float image; }; struct value { int no; struct complex com; }val1; A) com.real=1; B) plex.real=1; C) .real=1; D) val1.real=1; 3、结构体变量的初始化和赋值 使一个结构体变量获得数据“值”(实际上是给其各个成员赋值)有三种方法: ① 定义时初始化之 ② 用赋值语句对各成员分别赋值 ③ 同类型的结构体变量间相互赋值 如 student1=student2 示例: ① 定义时初始化之 【例六】 main() { struct { char name[15]; char class[12]; long num; } stu={Wenli,Computer,200113}; printf(%s\n
显示全部
相似文档