一、数组的概念
通常来说数组是⼀组相同类型元素的集合;
从这个概念中我们就可以发现2个有价值的信息:
• 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
• 数组中存放的多个数据,类型是相同的。
数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。
二、⼀维数组的创建和初始化
2.1 数组创建
1 type arr_name[常量值];
• type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃ 定义的类型
• arr_name 指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏(就是自己起名字)。
• [] 中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。
2.2、数组的初始化
数组的初始化分为两种:完全初始化和不完全初始化。还有就是错误的初始化,数组的初始化⼀般使⽤⼤括号,将数据放在⼤括号中。
1 int arr1[4] = {1,2,3,4};//完全初始化
2 int arr2[4] = {1,2,3};//不完全初始化,数组大小为4,而我们却只初始化三个值,系统会自动补充0
3 int arr3[4] ={1,2,3,4,5};//错误的初始化,数组大小为4,而我们初始化了5个值。
这里int表示数组的数据类型是整型,arr2表示数组名字(可以自己起),[4]表示数组大小为4个元素。
三、一维数组的使用
现在我们学习了数组是什么和数组初始化,在让我们看看数组怎么使用。
3.1 数组下标
C语⾔规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下 标就相当于数组元素的编号,如下:
1 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
如上图所示,但是我们怎么去访问数组中的元素呢?在C语⾔中数组的访问提供了⼀个操作符 [] ,这个操作符叫:下标引⽤操作符。
有了下标访问操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为7的元素,我们就 可以使⽤ arr[7] ,想要访问下标是3的元素,就可以使⽤ arr[3] ,如下代码:
3.2、数组元素的访问
接下来,如果想要访问整个数组的内容,那怎么办呢?
只要我们产⽣数组所有元素的下标就可以了,那我们使⽤for循环产⽣0~9的下标,接下来使⽤下标访问就⾏了。
如下代码:
3.3、数组元素的输入
和数组元素的访问一样,数组元素的输入可以通过for循环进行输入;
四、二维数组的使用
4.1、二维数组的概念
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元 素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称 为多维数组。
4.2、二维数组的创建
如何去定义二维数组?语法如下:
1 type arr_name[常量值1][常量值2];
2 例如:
3 int arr[3][5];
4 double data[2][8];
解释:上述代码中出现的信息
• 3表⽰数组有3⾏
• 5表⽰每⼀⾏有5个元素
• int 表⽰数组的每个元素是整型类型
• arr 是数组名,可以根据⾃⼰的需要指定名字 data数组意思基本⼀致。
4.3、二维数组的初始化
那二维数组如何初始化?答案是:同初始化一维数组一样,用大括号初始化。
初始化类型也和一维数组一样分为:完全初始化和不完全初始化。
不完全初始化
1 int arr1[3][5] = {1,2};
2 int arr2[3][5] = {0};
如下图所示
前面为arr1数组的初始化,后面为arr2数组的初始化。这里声明一点:初始化的元素不够系统会自动在后面补足0。
完全初始化
1 int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
按照行初始化
1 int arr4[3][5] = {{1,2},{3,4},{5,6}};
注意:初始化时省略⾏,但是不能省略列
像这样:
1 int arr5[][5] = {1,2,3};
4.4、二维数组下标
当我们掌握了⼆维数组的创建和初始化,那我们怎么使⽤⼆维数组呢?
其实⼆维数组访问也是使⽤下标的形式的,⼆维数组是有⾏和列的,只要锁定了⾏和列就能唯⼀锁定 数组中的⼀个元素。 C语⾔规定⼆维数组的⾏是从0开始的,列也是从0开始的。
#include <stdio.h>
int main()
{
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
printf("%d\n", arr[2][4]);
return 0;
}
4.5、二维数组的输入与输出
访问⼆维数组的单个元素我们知道了,那如何访问整个⼆维数组呢?
其实很简单,联想一下一维数组,一维数组输入和输出用了一次循环,所以二维数组要使用两次循环。
#include <stdio.h>
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;
}
五、总结
到这数组的知识就给大家讲完了,从数组的概念到一维数组的初始化和使用再到二维数组的初始化和使用。希望大家把知识顺顺,也欢迎大家补充。