第11章:数组,结构体,共同体(数组已经讲了,

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NSLog(@"%d",a[i]); }
//---------------------------------------[pool drain]; return 0; }
例:程序结果是什么?
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //---------------------------------------int f[20] = {1,1}; for(int i=2;i<20;i++) {
1、先声明结构体类型再定义变量名 2、在声明类型的同时定义变量 3、直接定义结构体类型变量
说明
(1)类型与变量是不同的概念,不要混同。只能对变 量赋值、存取或运算,而不能对一个类型赋值、存 取或运算。 (2)对结构体中的成员可以单独使用,它的作用与地 位相当于普通变量。 (3)成员也可以是一个结构体变量。 (4)成员名可以与程序中的变量名相同,二者不代表 同一对象。
共同体类型数据的特点
(4)不能对共用体变量名赋值,也不能企图引用变 量名来得到一个值,又不能在定义共用体变量时 对它初始化。 (5)不能把共用体变量作为函数参数,也不能使函 数带回共用体变量,但可以使用指向共用体变量 的指针。 (6)共用体类型可以出现在结构体类型定义中,也 可以定义共用体数组。反之,结构体也可以出现 在共用体类型定义中,数组也可以作为共用体的 成员。
ቤተ መጻሕፍቲ ባይዱ
结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定 义时指定初始值。
共同体
有时需要使几种不同类型的变量存放到同一段内存 单元中。例如,可把一个整型变量、一个字符型变量、 一个实型变量放在同一地址开始的内存单元中。以上3 个变量在内存中占的字节数不同,但都从同一地址开始。 也就是使用覆盖技术,几个变量互相覆盖。这种使几个 不同的变量共占同一段内存的结构,称为“共用体”类 型的结构。
枚举类型
如果一个变量只有几种可能的值,可以定义为 枚举类型。所谓“枚举”是指将变量的值一一列 举出来,变量的值只限于列举出来的值的范围内。
说明
(1)在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变 量,不能对它们赋值。 (2)枚举元素作为常量,它们是有值的,C语言编译按定义时的顺序使 它们的值为0,1,2,…。 (3)枚举值可以用来做判断比较。 (4)一个整数不能直接赋给一个枚举变量。
(3)常量表达式中可以包括常量和符号常量,不能包含变 量。C语言不允许对数组的大小作动态定义,即数组的 大小不依赖于程序运行过程中变量的值。
数组定义是否合法?
int a[]; int i = 3; int a[i]; int 3d[10]; int _c[3]; int b[2+1] int i = 3; int b[i+3];
说明
(1)用typedef可以声明各种类型名,但不能用来定义变 量。用typedef可以声明数组类型、字符串类型,使用比 较方便。 (2)用typedef只是对已经存在的类型增加一个类型名, 而没有创造新的类型。 (3)typedef与#define有相似之处。 (4)当不同源文件中用到同一类型数据时,常用typedef 声明一些数据类型,把它们单独放在一个文件中,然后 再需要用到它们的文件中用#include命令把它们包含进 来。 (5)使用typedef用利于程序的通用与移植。
结构体定义
声明一个结构体类型的一般形式为 struct 结构体名 {
成员列表; }; “结构体名”用作结构体类型的标志。大括弧内是该结 构体中的各个成员,由它们组成一个结构体。对各成员 都应进行类型声明,即 类型名 成员名; 成员名定名规则与变量名相同。
num 10010
结构体定义
name
sex
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //----------------------------------------
int a[2]={1,2,3}; for(int i=0;i<3;i++) {
NSLog(@"%i",a[i]); } //---------------------------------------[pool drain]; return 0; }
LILY
M
age
score
18
87.5
struct student {
int num; NSString *name; char sex; int age; float score; NSString *address; }
address Beijing
定义结构体类型变量的方法
前面只是指定了一个结构体类型,它相当于一个 模型,但其中并无具体数据,系统对之也不分配实际 内存单元。为了能在程序中使用结构体类型的数据, 应当定义结构体类型的变量,并在其中存放具体的数 据。可以采取以下三种方法定义结构体类型变量。
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //----------------------------------------
int a[10]; for(int i=0;i<=9;i++) {
a[i]=i; } for(int i=9;i>=0;i--) {
下标值应在已定义的数组大小的范围内。常出 现的错误是:
int a[3][4]; a[3][4]=3;
结构体
我们已介绍了基本类型(或称简单类型)的变量(如整 型、实型、字符型变量等),也介绍了一种构造类型数据 --数组,数组中的各元素是属于同一个类型的。
但是只有这些数据类型是不够的。有时需要将不同类 型的数据组合成一个有机的整体,以便于引用。这些组 合在一个整体中的数据是相互联系的。应当把它们组织 成一个组合项,在一个组合项中包含若干个类型不同的 数据项(当然也可以相同)。C语言允许用户自己指定这样 一种数据结构,它称为结构体。
结构体变量的引用
在定义了结构体变量以后,当然可以引用这个变 量。但应遵守以下规则: (1)不能将一个结构体变量作为一个整体进行输入和 输出。 (2)如果成员本身又属一个结构体类型,则要用若干 个成员运算符,一级一级地找到最低的一级的成员。 只能对最低级的成员进行赋值或存取以及运算。 (3)对结构体变量的成员可以像普通变量一样进行各 种运算(根据其类型决定可以进行的运算)。 (4)可以引用结构体变量成员的地址,也可以引用结 构体变量的地址。
[例11.14]口袋中有红、黄、蓝、白、黑5种颜色的球各一个。每次从口 袋中先后取出3个球,问得到3种不同色的球的可能取法,输出每种排 列的情况
用typedef定义类型
除了可以直接使用C提供的标准类型名(如int、 char、float、double、long等)和自己声明的结构体、 共用体、指针、枚举类型外,还可以用typedef声明 新的类型名来代替已有的类型名。
人有了知识,就会具备各种分析能力, 明辨是非的能力。
所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。
”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力;
通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣;
通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。
定义共用体类型变量的一般形式为 union 共用体名 {
成员表列 } 变量表列;
共同体的引用方式
只有先定义了共用体变量才能引用它。而且不 能引用共用体变量,而只能引用共用体变量中的成 员。
共同体类型数据的特点
(1)同一个内存段可以用来存放几种不同类型的成 员,但在每一瞬时只能存放其中一种,而不是同时 存放几种。也就是说,每一瞬时只有一个成员起作 用,其他成员不起作用,即不是同时都存在和起作 用。 (2)共用体变量中起作用的成员是最后一次存放的 成员,在存入一个新的成员后原有的成员就失去作 用。 (3)共用体变量的地址和它的各成员的地址都是同 一地址。
二维数组
二维数组定义的形式为 类型说明符 数组名[常量表达式][常量表达式]; 例如:float a[3][4], b[5][10];
二维数组可被看作是一种特殊的一维数组:它 的元素又是一个一维数组。
二维数组中元素排列的顺序是按行存放的。即 在内存中先顺序存放第一行的元素,再存放第二 行的元素。
二维数组的初始化
数组的初始化
对数组元素的初始化可以用以下方式实现 (1)在定义数组时对数组元素赋予初值。 (2)可以只给一部分元素赋值。
数组的引用
数组必须先定义,然后使用。 数组元素的表示形式为
数组名[下标] 下标可以是整型常量或整型表达式。
例:数组元素的引用
int main (int argc, const char * argv[]) {
可以用下面的方法对二维数组初始化 (1)可以将所有数据写在一个花括号内,按数组排列的顺序 对各元素赋初值。 (2)可以对部分元素赋初值。
二维数组的引用
二维数组元素的表示形式为 数组名[下标][下标]
例如a[2][3]。 下标可以是整型表达式,如a[2-1][2*2-1]。
数组元素可以出现在表达式中,也可以被赋值。 例如:b[1][2]=a[2][3]/2
第十一章:结构类型
数组
数组是有序数据的集合。数组中的每一个元素 都属于同一个数据类型。用一个统一的数组名和下 标来惟一地确定数组中的元素。
定义方式为: 类型说明符 数组名[常量表达式]; 例如:int a[10];
说明
(1)数组名的命名规则和变量名相同,遵循标识符命名规 则。
(2)在定义数组时,需要指定数组中元素的个数,方括号 中的常量表达式用来表示元素的个数,即数组长度。
f[i] = f[i-2]+f[i-1]; } for(int j=0;j<20;j++) {
NSLog(@"%d",f[j]); } //---------------------------------------[pool drain]; return 0; }
例:程序结果是什么?
int main (int argc, const char * argv[]) {
相关文档
最新文档