第3章 构造数据类型.ppt
文本预览下载声明
第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;
指针变量的初始化:
数据类型 *指针名=初始地址;
指
显示全部