1、一维数组数组
一、什么是数组数据结构
二、数组语法函数
三、下标指针
四、初始化索引
五、数组名和数组首地址内存
2、一维数组的应用it
一、数组的赋值与拷贝 io
二、数组的正反遍历class
三、随机数容器
四、数组乱序
五、数组的重复
3、二维数组
一、数组的数组
二、二维数组的初始化
三、二维数组的数组名
4、二维数组的应用
一、二维数组与二维表
二、下标计算
1、一维数组
一、什么是数组
• 数组是用来存储多条相同数据类型的数据结构。(容器)
分析关键点:
-多条
-类型相同-数组是数据的容器,而非数据自己
-数组中的每个数据,叫元素,数组由多个元素(数据)组成。-数据下标(索引)来区分数据中的元素
-元素从数组的位置0开始-元素可使用数组变量名[下标]来获得具体的元素-数组中元素的个数叫数组的长度
-数组所占空间=元素的类型*数组的长度
-数组是一段连续的内存区域 指针
-数组变量指向的区域,是数组在内存中的首地址
二、数组语法
• 定义数组: 元素类型 数组名[元素个数];
int array[3];
• 访问元素: 数组名[下标]
array[0] = 10;
三、下标
• 下标是指访问数组元素时,中括号中的数字
• 下标不能越界,若是越界,可能会致使如下后果:
–程序直接崩溃
–莫明的改变了其余变量或数据空间的值
–什么事儿都没有
四、初始化
• 赋使用的值
int array2[3]={3,4,5};//依次给数组元素赋值
int array4[3]={1,2};//若是赋值的个数少于数组 的长度,会 自动用0来填充后面的值
• 赋零值
int array[3];//未初始化 可能存在垃圾时
int array3[3]={0};//数组中每一个元素是0
五、数组名和数组首地址
• 数组名是一个地址,并且是不可变的地址
• 数组名不能够作为左值,就是不能出如今赋值语句的左边。初始化除外。
• 数组名是常量(指针)。 因此不能赋值
2、一维数组的应用
一、数组的赋值与拷贝
• 数组的赋值
int array[10];
array[2] = 10;//将数组的第三个元素赋值为10
• 数组的拷贝
int array[10] = {1,2,3,4,5,6,7,8,9,0};
int num [10];
for (int i = 0; i < 10; i++)num[i] = array[i];
二、数组的正反遍历
• 数组的正向遍历
int array[10] = {1,2,3,4,5,6,7,8,9,0};
for (int i = 0; i < 10; i++)
printf(“%d ”,array[i]);
• 数组的反向遍历
for (int i = 9; i >= 0; i--)
printf(“%d ”,array[i]);
三、随机数
• rand()函数用于生成一个随机数
• srand()函数用于定义随机种子
int main() {
srand((unsigned)time(0));
for (int i=0; i<10; i++) {
int x = rand() % 100;
}
printf("%d ", x);
printf("\n");
return 0;
}
四、数组乱序
• 数组乱序是指将数组中的元素随机排列
int main() {
int array[10] = {1,2,3,4,5,6,7,8,9,0};
srand((unsigned)time(0));
for (int i=0; i<10; i++) {int x = rand() % (10 - i) + i;
int temp = array[i];
array[i] = array[x];}
array[x] = temp;
for (int i=0; i<10; i++)
printf("%d ", array[i]);
return 0;
}
五、数组的重复
• 数组元素的重复是指将数组中存在相同的数组元素
3、二维数组
一、数组的数组
• 定义数组: 元素类型 数组名[元素个数] [元素个数];
int array[3][4];
• 访问元素: 数组名[下标] [下标]
array[1][2] = 10;
二、二维数组的初始化
• 对应元素内容
int array2[3][2]={{1,2},{3,4},{5,6}};
• 总体赋值
int array2[3][2]={1,2,3,4,5,6};
• 依次赋值 自动补零
int array2[3][2]={1,2,3,4};
三、二维数组的数组名
• 二维数组名一样是一个地址,并且是不可变的地址
• 二维数组名一样不能够作为左值,就是不能出如今赋值语 句的左边。初始化除外。
• 二维数组名是常量(指针)。 因此不能赋值
4、二维数组的应用
一、二维数组与二维表
• 二维数组实际上是数组的数组
• 能够将二维数组理解为一张几行几列的二维表。
二、下标计算
• 二维数组在内存中的存放方法是先存放列再存放行
eg:int array[3][4];
在内存的存放顺序是:
array[0][0]
array[0][1]
array[0][2]
array[0][3]
array[1][0]
array[1][1]
array[1][2]
array[1][3]
array[2][0]
array[2][1]
array[2][2]
array[2][3]