数组 结构体 共同体数组已经讲了 其余的没讲.pptx
-
资源ID:87375544
资源大小:203.91KB
全文页数:28页
- 资源格式: PPTX
下载积分:20金币
快捷下载

会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
数组 结构体 共同体数组已经讲了 其余的没讲.pptx
第1页/共28页数组数组 数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来惟一地确定数组中的元素。定义方式为:类型说明符 数组名常量表达式;例如:int a10;第2页/共28页说明说明(1)数组名的命名规则和变量名相同,遵循标识符命名规则。(2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。(3)常量表达式中可以包括常量和符号常量,不能包含变量。C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。第3页/共28页数组定义是否合法?数组定义是否合法?int a;int i=3;int ai;int 3d10;int _c3;int b2+1int i=3;int bi+3;第4页/共28页数组的初始化数组的初始化对数组元素的初始化可以用以下方式实现(1)在定义数组时对数组元素赋予初值。(2)可以只给一部分元素赋值。第5页/共28页数组的引用数组的引用数组必须先定义,然后使用。数组元素的表示形式为数组名下标下标可以是整型常量或整型表达式。第6页/共28页例:数组元素的引用int main(int argc,const char*argv)NSAutoreleasePool*pool=NSAutoreleasePool alloc init;/-int a10;for(int i=0;i=0;i-)NSLog(%d,ai);/-pool drain;return 0;第7页/共28页例:程序结果是什么?int main(int argc,const char*argv)NSAutoreleasePool*pool=NSAutoreleasePool alloc init;/-int f20=1,1;for(int i=2;i20;i+)fi=fi-2+fi-1;for(int j=0;j20;j+)NSLog(%d,fj);/-pool drain;return 0;第8页/共28页例:程序结果是什么?int main(int argc,const char*argv)NSAutoreleasePool*pool=NSAutoreleasePool alloc init;/-int a2=1,2,3;for(int i=0;i3;i+)NSLog(%i,ai);/-pool drain;return 0;第9页/共28页二维数组二维数组二维数组定义的形式为类型说明符 数组名常量表达式常量表达式;例如:float a34,b510;二维数组可被看作是一种特殊的一维数组:它的元素又是一个一维数组。二维数组中元素排列的顺序是按行存放的。即在内存中先顺序存放第一行的元素,再存放第二行的元素。第10页/共28页二维数组的初始化二维数组的初始化可以用下面的方法对二维数组初始化(1)可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。(2)可以对部分元素赋初值。第11页/共28页二维数组的引用二维数组的引用二维数组元素的表示形式为数组名下标下标例如a23。下标可以是整型表达式,如a2-12*2-1。数组元素可以出现在表达式中,也可以被赋值。例如:b12=a23/2下标值应在已定义的数组大小的范围内。常出现的错误是:int a34;a34=3;第12页/共28页结构体结构体 我们已介绍了基本类型(或称简单类型)的变量(如整型、实型、字符型变量等),也介绍了一种构造类型数据-数组,数组中的各元素是属于同一个类型的。但是只有这些数据类型是不够的。有时需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组合在一个整体中的数据是相互联系的。应当把它们组织成一个组合项,在一个组合项中包含若干个类型不同的数据项(当然也可以相同)。C语言允许用户自己指定这样一种数据结构,它称为结构体。第13页/共28页结构体定义结构体定义声明一个结构体类型的一般形式为struct 结构体名成员列表;“结构体名”用作结构体类型的标志。大括弧内是该结构体中的各个成员,由它们组成一个结构体。对各成员都应进行类型声明,即类型名 成员名;成员名定名规则与变量名相同。第14页/共28页结构体定义numnamesexagescoreaddress10010LILYM1887.5Beijingstruct student int num;NSString*name;char sex;int age;float score;NSString*address;第15页/共28页定义结构体类型变量的方法定义结构体类型变量的方法 前面只是指定了一个结构体类型,它相当于一个模型,但其中并无具体数据,系统对之也不分配实际内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。可以采取以下三种方法定义结构体类型变量。1、先声明结构体类型再定义变量名2、在声明类型的同时定义变量3、直接定义结构体类型变量第16页/共28页说明说明(1)类型与变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。(2)对结构体中的成员可以单独使用,它的作用与地位相当于普通变量。(3)成员也可以是一个结构体变量。(4)成员名可以与程序中的变量名相同,二者不代表同一对象。第17页/共28页结构体变量的引用结构体变量的引用在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则:(1)不能将一个结构体变量作为一个整体进行输入和输出。(2)如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。(3)对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。第18页/共28页结构体变量的初始化结构体变量的初始化 和其他类型变量一样,对结构体变量可以在定义时指定初始值。第19页/共28页共同体共同体有时需要使几种不同类型的变量存放到同一段内存单元中。例如,可把一个整型变量、一个字符型变量、一个实型变量放在同一地址开始的内存单元中。以上3个变量在内存中占的字节数不同,但都从同一地址开始。也就是使用覆盖技术,几个变量互相覆盖。这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。定义共用体类型变量的一般形式为union 共用体名 成员表列 变量表列;第20页/共28页共同体的引用方式共同体的引用方式 只有先定义了共用体变量才能引用它。而且不能引用共用体变量,而只能引用共用体变量中的成员。第21页/共28页共同体类型数据的特点共同体类型数据的特点(1)同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是同时存放几种。也就是说,每一瞬时只有一个成员起作用,其他成员不起作用,即不是同时都存在和起作用。(2)共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。(3)共用体变量的地址和它的各成员的地址都是同一地址。第22页/共28页共同体类型数据的特点共同体类型数据的特点 (4)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值,又不能在定义共用体变量时对它初始化。(5)不能把共用体变量作为函数参数,也不能使函数带回共用体变量,但可以使用指向共用体变量的指针。(6)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型定义中,数组也可以作为共用体的成员。第23页/共28页枚举类型枚举类型如果一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。第24页/共28页说明说明(1)在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。(2)枚举元素作为常量,它们是有值的,C语言编译按定义时的顺序使它们的值为0,1,2,。(3)枚举值可以用来做判断比较。(4)一个整数不能直接赋给一个枚举变量。例11.14口袋中有红、黄、蓝、白、黑5种颜色的球各一个。每次从口袋中先后取出3个球,问得到3种不同色的球的可能取法,输出每种排列的情况第25页/共28页用用typedef定义类型定义类型除了可以直接使用C提供的标准类型名(如int、char、float、double、long等)和自己声明的结构体、共用体、指针、枚举类型外,还可以用typedef声明新的类型名来代替已有的类型名。第26页/共28页说明说明(1)用typedef可以声明各种类型名,但不能用来定义变量。用typedef可以声明数组类型、字符串类型,使用比较方便。(2)用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。(3)typedef与#define有相似之处。(4)当不同源文件中用到同一类型数据时,常用typedef声明一些数据类型,把它们单独放在一个文件中,然后再需要用到它们的文件中用#include命令把它们包含进来。(5)使用typedef用利于程序的通用与移植。第27页/共28页感谢您的观看。第28页/共28页