1.数组的概念及定义
数组:数组就是变量的集合,是一种指定义变量的方法。
(1)一维数组
一维数组:把变量排成一排。
定义:类型 数组[数量];[ ]里的整数表示变量的数量
int arr[5] <=> int n1,n2,n3,n4,n5;
数组的变量,值也是不确定的,为了安全需要初始化。
使用:数组名[编号];
[ ]里的整数表示的是编号 arr[0],arr[1],arr[2],arr[3],arr[4]; 编号也叫下标,范围:0 ~ 数量-1。
遍历:配合循环语句,使用循环变量当作数组的编号。
for(int i=0; i<5; i++)
{
printf("%d\n",arr[i]);
}
初始化:类型 数组[数量] = {v0,v1,v2,v3…};
1、如果初始化数据不够,编译器会自动补零。
2、如果初始化数据过多,编译器会丢弃多余的数据并给出警告。
3、对数组初始化时,数组的数量可以省略,编译器会统计出初始化数据的个数然后再告诉数组。
sizeof(arr) 计算出数组的总字节数。
sizeof(arr[0]) 计算出其中一个变量的字节数。
(2)二维数组
二维数组:把变量排一个方阵。
定义:类型 数组名[行数][列数];
int arr[3][4];
使用:数组名[行编号][列编号],编号从零开始。
arr[0][0],arr[0][1],arr[0][2],arr[0][3]
arr[1][0],arr[1][1],arr[1][2],arr[1][3]
arr[2][0],arr[2][1],arr[2][2],arr[2][3]
遍历:配合双层for,外层循环负责遍历行,内层循环负责遍历列。
for(int i=0; i<3; i++)
{
for(int j=0; j<4; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
初始化:数组名[行编号][列编号] = {{v0,v1,v2},{v0,v1,v2},{v0,v1,v2}};
(3)数组越界
数组越界的后果:
1、产生脏数据。
2、一切正常。
3、段错误 (核心已转储)。
(4)数组的应用:走迷宫
走迷宫:
1.数据分析:
迷宫:char maze[10][10];
墙 ‘#’
老鼠 ‘@’
出口 ’ ’
路 ’ ’
老鼠的坐标:char mouse_x,mouse_y;
出口的坐标:char out_x,out_y;
2.业务流程:
显示迷宫:先清理屏幕,再显示迷宫。
stdlib.h
system(“clear”);
判断是否到达出口:判断老鼠的坐标与出口的坐标是否重合。
获取方向键:
getch.h
getch();
183 up,184 down,185 right,186 left
先把原位置赋值为’ ‘,新位置赋值为’ '。
不能穿墙,不能越界。