数组是一组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:
• 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
• 数组中存放的多个数据,类型是相同的。
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。
类型 数组名[常量]
数组的初始化一般使用大括号,将数据放在大括号中。
//完全初始化
int arr[5] = {1,2,3,4,5};
//不完全初始化
int arr2[6] = {1};//第⼀个元素初始化为1,剩余的元素默认初始化为0
//错误的初始化 - 初始化项太多
int arr3[3] = {1, 2, 3, 4};
数组也是有类型的,数组算是一种自定义类型,去掉数组名留下的就是数组的类型。
int arr1[10];
int arr2[12];
char ch[5];
arr1数组的类型是 int [10]
arr2数组的类型是 int[12]
ch 数组的类型是 char [5]
C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标是n-1,下标就相当于数组元素的编号,如下:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
数组的访问提供了一个操作符 [] ,这个操作符叫:下标引用操作符。
只要我们产生数组所有元素的下标就可以了,那我们使用for循环产生0~9的下标,接下来使用下标访问就行了。
#include
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i = 0;
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
}
数组随着下标的增长,地址是由小到大变化的,所以我们得出结论:数组在内存中是连续存放的。
类型 数组名[常量值1][常量值2]
int arr1[3][5] = {1,2};
int arr2[3][5] = {0};
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
int arr4[3][5] = {{1,2},{3,4},{5,6}};
#include
int main()
{
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
int i = 0;//⾏
//输⼊
for(i=0; i<3; i++)
{
int j = 0;//列
for(j=0; j<5; j++)
{
scanf("%d", &arr[i][j]); //输⼊数据
}
}
//输出
for(i=0; i<3; i++)
{
int j = 0;
for(j=0; j<5; j++)
{
printf("%d ", arr[i][j]); //输出数据
}
printf("\n");
}
return 0;
}
注:二维数组中的每个元素都是连续存放的。