文档详情

第3章 构造数据类型.ppt

发布:2017-06-06约8.77千字共70页下载文档
文本预览下载声明
第3章 构造数据类型 主要内容 数组 一维数组、二维数组 指针 指针的概念、操作,动态内存分配 引用 引用与指针的比较 字符串 字符数组、字符指针、 string类 枚举类型、结构体与共用体 数组 数组是具有一定顺序关系的若干相同类型变量的集合体 数组的元素 数组的下标 构造数据类型 一维数组的声明与引用 一维数组的声明 类型说明符 数组名[ 常量表达式 ]; 例如:int a[10]; 表示 a 为整型数组,有10个元素:a[0]...a[9] 引用 必须先声明,后使用。 只能逐个引用数组元素,不能引用整个数组 一维数组的存储 数组元素在内存中顺次存放,地址是连续的 如果定义数组 double a[10]; 假设第1个元素a[0]的起始地址是1000号存储单元,那么, 最后一个元素是什么? 最后一个元素的起始地址是多少? 一维数组的引用 引用一维数组元素的方法: 数组名[下标表达式] 说明: 引用数组元素时不要“越界”。 例:int a[100]; 首个数组元素是a[0], 最后1个是a[99] 一维数组的初始化 在声明数组时对数组元素赋以初值 一维数组的初始化方法 全部初始化: int a[5]={66,80,75,92,55}; 部分初始化: int a[5]={66,80,75}; 全部初始化,可省略数组大小,例: int a[ ]={66,80,75,92,55}; 例3-1有5名学生的成绩存放在数组score中,输出平均分数以及高于平均分的成绩。 int score[5]={60,75,90,88,56}; int i; float mean=0; for(i=0;i5;i++) mean+=score[i]; mean /=5; cout平均分:meanendl; for(i=0;i5;i++) if(score[i]mean) coutscore[i]endl; 3.1.2 二维数组 有两个下标的数组称为二维数组。如:矩阵、行列式、二维表格 二维数组的定义: 类型名 数组名[整型常量表达式1][整型常量表达式2]; 二维数组的2个下标——行下标、列下标 例:int a[2][3]; 二维数组的存储 二维数组的存储顺序:先按“行”再按“列”进行存放。 例如,对于二维数组int a[2][3]; 存放次序为: 先存放第1行的3个元素:a[0][0], a[0][1], a[0][2] 再存放第2行的3个元素:a[1][0], a[1][1], a[1][2] 二维数组的引用 二维数组元素的引用方法 数组名[下标表达式1][下标表达式2] 例:二维数组int a[2][3]的6个元素 注意:引用不能使用下面的形式:a[1,2]或a(1,2) 二维数组的初始化 全部元素初始化。例如: 分行给二维数组赋初值 int a[2][3]={ {1,3,5}, {6,7,8} }; 对于全部数组元素初始化,可简化为: 将所有数据写在一个{ }内,按顺序赋值 int a[2][3]={1,3,5,6,7,8}; int a[ ][3]={1,3,5,6,7,8}; 部分元素初始化。例如: int a[2][3]={{1},{6,7}}; 初始化以后的数组元素如下: 1 0 0 6 7 0 部分元素初始化时,表中的花括号不能省略 比较 int a[2][3]={1,6,7}; 二维数组的初始化 例3-2 编程实现矩阵转置 int A[2][3]={{1,2,3},{4,5,6}}, int B[3][2]; int i, j; cout矩阵A:endl; for(i=0;i2;i++) { for(j=0;j3;j++) coutA[i][j]\t; coutendl; } 例3-2 编程实现矩阵转置 for(i=0;i3;i++) for(j=0;j2;j++) B[i][j]=A[j][i]; cout矩阵B:endl; for(i=0;i3;i++) { for(j=0;j2;j++) coutB[i][j]\t; coutendl; } 3.2指针 内存空间的访问方式 通过变量名访问 通过地址访问 指针用于间接访问内存单元 指针变量:存放地址的变量 指针变量的定义形式如下: 类型名 *指针变量名; 指针的基本操作 (1)让指针指向某个地址 取地址运算符“” 例如, float x; float *p; p=x; 可合并为: float x,*p=x; 指针变量的初始化: 数据类型 *指针名=初始地址; 指
显示全部
相似文档