数组
2022年7月25日
19:11
- 为什么需要数组?
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
- 数组中所代表的意义
- 数组的分类
- 一维数组
1.怎样定义一维数组
- 为n个变量连续分类存储空间
- 所有变量的数据类型必须相同
- 所有变量所占的字节大小必须相等
举例:
int a[5];
一维数组名不代表数组中所有的数,
一维数组名代表数组第一个元素的地址。
2.有关以为数组的操作
1)初始化
完全初始化
int a[5] = {1,2,3,4,5};
不完全初始化
此时未被初始化的元素为0
int a[5] = {1,2,3};
不初始化
此时所有元素是垃圾值
int a[5];
清零
int a[5] = {0};
2) 错误写法
例1:
int a[5] ; //仅在定义数组时, [5] 中的5可以表示数组元素的个数
a[5] = {1,2,3,4,5}; //错误,此时 [5] 中的表示数组元素的下标(位置)
例2:
int a[5] = {1,2,3,4,5};
a[5] = 100; //错误,因为没有a[5]这个元素,最大只有a[4]
只有在定义数组的同时才可以整体赋值,
其他情况下整体赋值都是错误的。
例3:
将数组a中的值全部赋给数组b
a,b代表的是数组名,数组名代表的是第一个元素 a[0] 的地址
int a[5] = {1,2,3,4,5};
Int b[5] ;
b = a; //错误,
for (i=0;i<5;i++)
b[i] = a[i];//正确
3)一维数组的使用
赋值
排序
求最大/最小
倒置
查找
插入
删除
- 二维数组
int a[3][4];
表示总共是12个元素,可以当作3行4列看待
这1个元素的名字依次为:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j] 表示第 i+1 行 第 i+1 列的元素
int a[m][n]; //该二维数组右下角位置的元素只能是 a[m-1][n-1]
1)初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
Int a[3][4] = {
{ 1 , 2, 3, 4}
{ 5, 6, 7, 8}
{ 9,10,11,12}
};
2)二维数组的使用:
例1:输出二维数组
例题:
对二维数组的排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘
- 多维数组
是否存在多维数组
不存在
因为内存是线性一维的
n维数组可以当作每个元素是n-1维数组的一维数组
比如:
int a[3][4];
该数组是含有3个元素的一维数组
只不过每个元素都可以再分成四个小元素
int a[3][4][5];
该数组是含有3个元素的一维数组
每个元素都是4行5列的二维数组