结构体数组-Piazza.PPT

结构体数组-Piazza

C 语言程序设计 结构体与共用体 周闻钧 朱宏明 本讲内容 结构体类型变量的定义方法 结构体类型变量的引用和初始化 结构体数组和指针 共用体 枚举类型 typedef 结构体概述 有时需要将不同类型的数据组合成一个有机的整体,以便于应用。这些组合在一个整体中的数据是互相联系的 struct 结构体名 {成员列表}; 大括弧内的成员变量的声明 类型名 成员名 结构体概述 定义结构体类型变量的方法 先声明结构体类型再定义变量名 struct student strudent1,strudent2 在声明类定的同时定义变量 struct 结构体名 {成员列表 }变量名列表; 直接定义结构类型变量 struct {成员列表 }变量名列表; 结构体类型 类型和变量是不同的概念,不要混同。只能对变量赋值,存取和运算,不能对类型赋值,存取和运算 对结构体中的成员可以单独使用,他的作用于地位相当于普通变量 成员也可以是一个结构体变量 成员名可以与程序中的变量名相同,两者代表不同的对象 结构体变量的引用 不能将结构体变量作为一个整体进行输入和输出,只能对结构体变量中的各个成员分别进行输入和输出 引用结构体变量中成员的方式为 结构体变量名.成员名 如果成员本身又属于一个结构体类型,组要用若干个成员运算符,一级一级的找到最低一级的成员。只能对最低级的成员赋值或存取以及运算 嵌套结构体 结构体变量的引用 对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算) 可以引用结构体变量的地址,也可以引用结构体变量的地址 结构体变量的地址主要用于做函数的参数,传递结构体的地址 对结构体的初始化可以在定义时指定初始值 结构体数组 结构体数组和以前介绍过的数值型数组不同之处在于每个数组元素都是一个结构体类型的数据,他们都包括各个成员变量 结构体数组在内存中是连续存放的 结构体数组 指向结构体类型数据的指针 一个结构体变量的指针就是该变量所占据的内存的内存段的起始地址 指针变量也可以用来指向结构体数组中的元素 指向结构体变量的指针 下列三种等价形式: 结构体变量.成员名 (*P).成员名 P-成员名 指向结构体变量的指针 指向结构体数组的指针 如果p的初值是stu,即指向第一个元素,则p+1后指向下一个元素的起始地址 程序已经定义了指针P为指向struct student类型数据的变量,他只能指向一个struct student类型的数据,而不能指向stu数组元素中的某一个成员 用结构体变量和指向结构体的指针做函数的参数 将一个结构体变量的值传递给另一个函数 用结构体变量成员作参数 用结构体变量作参数,但这种传递方式在时间和空间的开销很大 用指向结构体变量的指针做实参,将结构体变量的地址传给形参 向函数传递结构体信息 向函数传递结构体信息 向函数传递结构体信息 共用体 共用体的概念 有时需要使几个不同类型的变量放到同一段内存单元中 结构体变量的一般形式: Union 共用体名 {成员列表 }变量列表; 共用体 共用体和结构体 结构体变量所占用的内存长度是各个成员变量所占的内存长度之和。每个成员变量占有其自己的内存单元 共用体变量所占的内存长度等于最长的成员变量的长度 共用体变量的引用方式 只有先定义了共用体变量才能引用它 不能引用共用体变量 只能引用共用体变量中的成员 引用共用体变量的方式 共用体成员名.变量名 共用体类型数据的特点 同一内存段可以用来存放几种不同类型的成员,但在每一瞬间只能存放一种,而不是几种 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后,原来的成员就失去作用了 共用体变量的地址和他的各成员的地址是同一地址 共用体类型数据的特点 不能对共用体变量名赋值,也不能企图通过引用变量名来得到一个值,并且不能初始化 不能把共用体变量作为函数的参数,也不能是函数带回共用体变量,但可以使用指向共用体变量的指针 共用体类型可以出现在结构体类型中,也可以定义共用体数组 枚举类型 枚举类型是ANSI C新标准所加 如果一个变量只有少数几个可能的值,可以定义为枚举类型 enum TrafficLight {green, yellow,red}; 所谓枚举是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内 对枚举元素按常量处理,他们不是变量,不能对他们赋值 枚举元素作为常量,他们是有值的,C编译器按定义时的顺序值为0,1,2…。枚举值可以做判断比较 一个整数不能直接赋值给一个枚举变量 typedef 除了可以直接使用C提供的标准类型名和自己声明的结构体、共用体、指针、枚举类定外,还可以用typedef声明新的类型来代替已有的类型名 用typedef可以声明各种类型名,但不能用来定义变量 用ty

文档评论(0)

1亿VIP精品文档

相关文档