- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计(第7章)
莆田学院现代教育技术中心 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
文档评论(0)