1.数组的基本概念
定义多组数据过于麻烦,因此我们用数组一次性定义定义多组数据。
数组是一组类型相同的元素的集合。
(1)数组可一存放1到多个数据,但元素不能为空
(2)存放的多个数据类型必须相同
2.数组的创建与初始化
2.1创建
type arr_name[常量值]
type指的是数组的数据类型
arr_name指的是数组名
常量值代表数组内元素个数
注:代码名,变量名,数组名取名时最好有意义,方便后期的审阅更改
int math[20];
char ch[9];
2.2初始化
int math_1[20] = {1,2,3}; //不完全初始化
int math_2[5] = {1,2,3,4,5}; //完全初始化
int math_3[3] = {1,2,3,4}; //错误的初始化
不完全初始化除去已赋值的元素,剩余的自动补充“0”.
3数组的使用
3.1数组的下标
数组的下标是从0开始存放,假设数组里有n个元素,则存放最后一个元素下标为n-1
下标引用操作符[ ]
3.2数组的输入
问:为什么使用while循环会出现debug error,而使用for循环不会?
int main(){
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
}
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3.3数组在内存中的存储
数组在内存中的存储是连续存放的
一个 内存单元的大小是一字节,由于数组是int类型,所以一个数组元素占四个字节
%p以十六进制展示
所以地址每次增加四:8->c->0->4->8
4.二维数组
4.1二维数组的创建
type arr_name[ 常量1][常量2 ];
常量1可以为空 ,常量2必须有固定数值
eg:int score[3][5];
表示数组有三行五列
图4.1
4.2二维数组中的初始化
int arr[3][5]={1,2};//不完全初始化
int arr2[3][5]={1,2,3,4,5, 4,5,6,7,8, 6,7,8,9,0}//完全初始化
int arr3[3][5]={{1,2},{2},{3}}//按照行初始化每个{}代表一行,不满五个自动补0
//可以省略行但不能省略列
4.3二维数组的下标
下标的作用其实就是用来定位。
行列同一维数组都是从0开始的。
4.4二维数组的输入
请参照图4.1
4.5二维数组在内存中的存储方式
二维数组同一维数组一样是连续存放的,每一行是一个一维数组,第一行一维数组存放完紧接着开始存放第二行