一个数组就是多个变量的有序集合
1)定义一个数组,就定义了很多的变量
2)这每一个变量都是数组的一个元素或成员
3)数组是一个有序的集合,也就是说可以使用一个数字引用变量
4)数组中每一个元素的使用和一个一般的变量使用一样
一维数组是元素都不是数组的数组
1)数组元素是一个简单的类型或其他非数组的类型2)一维数组好比一串羊肉串,一个元素挨着一个元素
3)一个数组只允许存储一种数据类型的数据
语法:
数据类型 数组名[ 数组长度 ];
1)数据类型表示数组中每一个元素的类型
2)数组的名字就是一个标识符
3)数组长度可以是一个表达式,表示数组里面有几个变量,常常称为数组的长度
例如:
int nums[3];
表示定义了一个名字为 nums 的数组. 使用 nums 这个名字引用数组,数组里面有 3 个变量,都是 int 类型的
例如:
char chs[10];
表示定义了一个长度为 10 的,存储 char 类型的数组
注意:
早期 C 语言不允许使用变量定义数组
C99 标准中允许使用变量定义数组长度
先定义再初始化,使用下标为每一个元素赋值
语法是 数组名[下标]
int nums[5];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
定义的同时进行初始化
1)完全初始化
int nums[5] = { 1, 2, 3, 4, 5 };
2)不完全初始化,没有提供数据的默认初始化为 0
int nums[10] = { 1, 2, 3, 4, 5 };
3)省略数组长度,由编译器自动判断
int nums[] = { 1, 2, 3, 4, 5 };
printf("%d\n", nums[0]);
printf("%d\n", nums[1]);
printf("%d\n", nums[2]);
引用数组元素和使用指定类型变量一样,可以读取数据赋值等
1)读取数据
2)获取数据(打印,计算)
3)自增等
for (int i = 0; i < length; i++) {
printf("%d\n", nums[i] );
}
for (int i =0;i <10 ;i ++)
{
for (int j =1; j+i<10 ;j ++){
if (nums[i] > nums[j+i]){
int temp =nums [i];
nums [i]=nums[j+i];
nums[j+i]=temp ;
}
}
}
调用:
int main (void) {
...
int nums[2][3];
...
func(nums, 2, 3);
...
}
注意:参数第一个数字可以省略
特点:函数内与函数外可以看成是同一个二维数组
#include
#define ROW 6
#define COL 6
int main(int argc, const char * argv[]) {
char map[ROW][COL]={
{'#','#','#','#','#','#'},
{'#','O','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};
char input ;
int x=1;
int y=1;
while (1)
{
for (int i =0 ;i < ROW ;i++){
for (int j =0;j ") ;
input = getchar() ;// 输入字符
while ( getchar()!='\n');// 吸收回车键字符
if (input =='w'|| input =='a'||input =='s'||input =='d'){
break ; //如果输入正确则退出while 循环语句
}
}
switch (input){
case 'w':
if (map[x-1][y]==' '){
int temp =map[x-1][y];
map[x-1][y]=map[x][y];
map[x][y]=temp ;
x--;
}
break ;
case 's':
if (map [x+1][y]==' '){
int temp =map[x+1][y];
map[x+1][y]=map[x][y];
map[x][y]=temp ;
x++;
}
break;
case 'a':
if (map [x][y-1]==' '){
int temp =map[x][y-1];
map[x][y-1]=map[x][y];
map[x][y]=temp ;
y--;
}
break;
case 'd':
if (map [x][y+1]==' '){
int temp =map[x][y+1];
map[x][y+1]=map[x][y];
map[x][y] = temp ;
y++;
}
break;
}
system ("clear");
}
printf("恭喜你重获自由...\n");
return 0;
}