一、问题引入:为什么要使用数组?
应用场景:一个班有一百个学生,我们需要对这些学生成绩进行记录,我们不可能手动定义100个整形变量来记录数据。所有就有了数组的出现
二、数组的定义
类型符 数组名[常量表达式]
如:int a[10]
int a[10];
int b[] = {1,2,3};//自动补充数组个数
/*
数组数多于赋值数量时,剩余的数会被赋值为0
int 类型为0
字符为'0'
float为0.0
*/
int c[5] = {1,2,3};
三、数组案例练习
四、二维数组
使用场景:
1.假设一个n个小组,每个小组有m个组员,我们需要要记录组员成绩。那么一个就需要n×m空间来存放。
2.矩阵
二维数组的定义
类型符 数组名[常量表达式][常量表达式]
如:int b[3][4];
可以理解一个三行四列的矩阵。每一行四个元素。
注意:
定义二维数组时行号可以不写,列号一定要写。
就像是我们分组的时候,已经指定了每个组多少个人。但由于不知道总人数有多少,不知道有多少个组。
//定义的时候可以采取这种方式,更加直观
int d[3][3] = {{1,2,3},
{4,5,6},
{7,8,9}};
下面是两段代码的执行结果:
#include <stdio.h>
int main()
{
int arr[][4] = {12,3};
int row = sizeof(arr)/sizeof(arr[0]);
int column = sizeof(arr[0])/sizeof(int);
int i,j;
for(i =0;i < row;i++){
for(j = 0;j < column;j++){
printf("%d ",arr[i][j]);
}
putchar('\n');
}
return 0;
}
执行结果:
#include <stdio.h>
int main()
{
int arr[][4] = {{12,3},{3}};
int row = sizeof(arr)/sizeof(arr[0]);
int column = sizeof(arr[0])/sizeof(int);
int i,j;
for(i =0;i < row;i++){
for(j = 0;j < column;j++){
printf("%d ",arr[i][j]);
}
putchar('\n');
}
return 0;
}
执行结果:
由此可见:未指定赋值的元素与一维数组相同,都会被赋上默认初始值0。