5. 数组

1. 数组的概念

数组是一组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:

• 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
• 数组中存放的多个数据,类型是相同的。

2. 一维数组的创建和初始化

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。

类型 数组名[常量]


数组的初始化一般使用大括号,将数据放在大括号中。
 

//完全初始化
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] 

3.一维数组的使用

3.1 数组下标

C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标是n-1,下标就相当于数组元素的编号,如下:

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

5. 数组_第1张图片

数组的访问提供了一个操作符 [] ,这个操作符叫:下标引用操作符。

3.2 数组元素的打印

只要我们产生数组所有元素的下标就可以了,那我们使用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;
}
3.3 数组的输入
明白了数组的访问,当然我们也根据需求,自己给数组输入想要的数据,
for(i=0; i<10; i++)
{
scanf("%d", &arr[i]);
}

数组随着下标的增长,地址是由小到大变化的,所以我们得出结论:数组在内存中是连续存放的。

4. 二维数组的概念

前面学习的数组被称为一维数组,数组的元素都是内置类型的,如果我们把一维数组做为数组的元素,这时候就是二维数组。
5. 数组_第2张图片

5. 定义二维数组

类型 数组名[常量值1][常量值2]

6. 二维数组的初始化

6.1 不完全初始化
int arr1[3][5] = {1,2};
int arr2[3][5] = {0};

5. 数组_第3张图片

6.2 完全初始化
 
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};

5. 数组_第4张图片

6.3 按照行初始化
 
int arr4[3][5] = {{1,2},{3,4},{5,6}};

5. 数组_第5张图片

6.4 初始化时省略行,但是不能省略列

7.二维数组的使用

7.1 二维数组的下标
5. 数组_第6张图片
7.2 二维数组的输入和输出
 
#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;
}

注:二维数组中的每个元素都是连续存放的。
 

你可能感兴趣的:(c语言)