C语言设计第9章 复合结构类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1 节 结构体类型变量定义与引用
•
• • • • • • • • • };
C语言没有提供现成的结构体类型,因此用户必须要在程序中建立所 需要的结构体类型。结构体类型的定义格式为: struct 结构体类型名 { 数据类型1 成员名1; 数据类型2 成员名2; 数据类型3 成员名3; …… 数据类型n 成员名n;
• 3、结构体类型变量的初始化与引用 • 在程序中使用结构体变量时,往往不把它作为一个整体来使用。在C 中除了允许具有相同类型的结构体变量相互赋值以外,一般对结构体 变量的使用,包括赋值、输入、输出、运算等都是通过结构体变量的 成员来实现的。结构变量的赋值就是给各成员赋值。可用输入语句或 赋值语句来完成。 • (1)引用结构变量成员。一般形式是: • 结构体变量名.成员名 • 例如:student1.num表示student1变量中的num成员,即student1的 num(学号)项,可以对变量的成员赋值。如, student1.num=201110; • “.”是成员(分量)运算符,它在所有的运算符中优先级最高,因 些可以把student1.num作为一个整体来看待。上面赋值语句的作用是 将整数201110赋给student1变量中的成员num。
第1 节 结构体类型变量定义与引用
• 其中,struct 是关键字,关键字struct连同后面的结构体标识符一 起称为结构类型名或结构名;结构体名是由用户定义的标识符,其命 名规则应符合标识符的书写;数据类型可以是基本类型说明符,也可 以是已定义过的结构体类型名,还可以是后面将要介绍的共用体类型 ;成员名也是用户自定义的标识符,用来标识所包含的成员名称;各 成员的定义语句必须在花括号内;注意不要忽略最后的分号,它是整 个定义语句的结尾。 定义结构体类型是需要注意以下几个问题: • 类型与变量是不同的概念,不能混淆。可以对变量进行赋值、存取或 运算,但不能对类型进行赋值、存取或运算。编译时对类型不分配空 间,只对变量分配空间。 • 结构体中的成员可以单独使用,其作用和地位相当于普通变量。
第1 节 结构体类型变量定义与引用
1、结构体类型的定义 • 在解决实际问题中,一组数据往往具有不同的数据类型。例如 ,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄 应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一 个数组来存放这样一组数据。因为数组中各元素的类型和长度都必须 一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另 一种构造数据类型——“结构(structure)”或叫“结构体”。每 一个成员可以是一个基本数据类型或者又是一个构造类型。结构既然 是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义 ,也就是先构造。如同在调用函数之前要先定义函数一样。
第1 节 结构体类型变量定义与引用
• • (2)结构体变量的赋值方法有三种:初始化、赋值、从键盘输入。 • ①结构体变量的初始化——结构体变量在声明时直接进行初始化 • 例如:student1、student2被定义为结构体变量,并对student2作了 初始化赋值。在main函数中,把student2的值整体赋予student1,然 后用printf语句输出student1各成员的值。
第1 节 结构体类型变量定义与引用
• • • • • • • • • • • • • main() { struct stu { int num; char name[20]; char sex; float score; }student1,student2={101,”Lihao”,”M”,90.5}; student1=student2; printf(“number=%d,name=%s,sex=%c,score=%f\n”,student1.nБайду номын сангаасm, student1.name,student1.sex,student1.score); }
第1 节 结构体类型变量定义与引用
• • • • • • • • • • • • • • (2)在声明类型的同时定义变量 一般格式为: struct 结构体名 { 成员列表; } 变量名列表; (3)直接定义结构体类型变量 一般格式为: struct { 成员列表; } 变量名列表;
第1 节 结构体类型变量定义与引用
第1 节 结构体类型变量定义与引用
• 2、结构体类型变量定义 • 指定了一个结构体类型,相当于建立一个模型,但其中并没有具体的 数据,系统也不会为其分配实际的内存单元,为了能在程序中使用结 构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的 数据。可以采取以下介绍的3种定义结构体类型变量。 • • (1)先声明结构体类型再定义变量名 • 一般格式为: • struct 结构体名 变量名; •
第9章
复合结构类型
内容简介
前面已介绍了基本类型的变量,如整型、 字符型与实型。还介绍了一种构造类型数 据(数组),数组中的各元素是同一种类 型的。但是在实际应用中只有这些数据类 型是不够的。有时需要将不同类型的数据 组合成一个整体,整体中的数据是互相联 系的,以便于引用。
例如,一个学生的信息可以由学号、姓 名、性别、年龄、成绩、地址若干个数据 项组成,但是这些数据项并不属于同一种 数据类型。如果把这些数据项分别定义为 互相独立的简单变量,难以反映它们之间 的内在联系,所以把它们组织成一个组合 项,在组合项中包含若干个类型不同的数 据项。C语言允许定义这样的一种数据结构, 称为结构体类型(struct)。结构体类型 相当于其他高级语言中的“记录”。
第1 节 结构体类型变量定义与引用
• 结构体类型定义的位置,可以在函数内部,也可以在函数外部。在函 数内部定义的结构体类型,只能在函数内部使用;在函数外部定义的 结构体类型,其有效范围是从定义处开始,直到它所在的源程序文件 结束。 • 结构体中的每个成员都必须有自己的数据类型,位置上连续的同类型 的结构体成员可以出现在一条语句,并共用同一个类型关键字。 • 结构体成员可和程序中的其他标识符同名,也可以和另一个结构体的 成员同名。 • 结构体中的成员名可以与程序中的变量名相同,但二者并不代表同一 个对象。 • struct是声明结构体类型时必须使用的关键字,不能省略;每定义一 个变量,其后跟一个分号,不能忽略大括号外的分号。