目录
一.数组的概念
数组是⼀组相同类型元素的集合。
数组中存放的是1个或者多个数据,但是数组元素个数不能为0。
数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。
二.⼀维数组的创建和初始化
1.数组创建
type arr_name[常量值];
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。
type 指定的是数组中存放数据的类型,可以是:char、short、int、float等,也可以⾃定义的类型。
arr_name指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。
[]中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。
⽐如:我们现在想存储某个班级的20⼈的数学成绩,那我们就可以创建⼀个数组,如下:
int math[20];
2.数组的初始化
数组在创建的时候,我们可以给定⼀些初始值,这就称为初始化。
数组的初始化要根据数组的大小来确定,可以小于或等于数组大小,但不能大于
//完全初始化
int arr[5] = {1,2,3,4,5};
//不完全初始化
int arr2[6] = {1};//第⼀个元素初始化为1,剩余的元素默认初始化为0
//错误的初始化 - 初始化项太多
int arr3[3] = {1, 2, 3, 4};
三.一维数组的使用
C语⾔规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后⼀个元素的下标是n-1,下标就相当于数组元素的编号。创建一个如下数组:
int arr[5]={1,2,3,4,5};
数组中的值与下标的对应关系如下:
数组中的值 | 1 | 2 | 3 | 4 | 5 |
对应的下标 | 0 | 1 | 2 | 3 | 4 |
在C语⾔中数组的访问提供了⼀个操作符[],这个操作符叫:下标引⽤操作符。有了下标引用操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为3的元素,我们就可以使⽤ arr[3],想要访问下标是0的元素,就可以使⽤arr[0],如下代码:
#include <stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5};
printf("%d\n", arr[3]);//4
printf("%d\n", arr[0]);//1
return 0;
}
1.数组元素的打印
想要打印整个数组内容时,只要我们产⽣数组所有元素的下标就可以了,可以使⽤for循环产⽣0~9的下标,接下来使⽤下标访问就⾏了。代码如下:
#include <stdio.h>
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;
}
2.数组的输入
我们也可以使用for循环和scanf函数去将元素输入数组中,如下:
#include <stdio.h>
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]);
}
return 0;
}
四.sizeof计算数组元素个数
在前文中,我们讲过sizeof可以计算字符串的大小,除此之外,sizeof还可以计算数组的大小。例如:
#include <stido.h>
int main()
{
int arr[10] = {0};
printf("%d\n", sizeof(arr));
return 0;
}
这⾥输出的结果是40,计算的是数组所占内存空间的总⼤⼩,单位是字节。
数组中所有元素的类型都是相同的,只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。所以我们选择第⼀个元素算⼤⼩就可以。
#include <stido.h>
int main()
{
int arr[10] = {0};
printf("%d\n", sizeof(arr[0]));//计算⼀个元素的⼤⼩,单位是字节
return 0;
}
接下来就能计算出数组的元素个数:
#include <stido.h>
int main()
{
int arr[10] = {0};
int sz = sizeof(arr)/sizeof(arr[0]);
printf("%d\n", sz);
return 0;
}
这⾥的结果是:10,表⽰数组有10个元素。
五.⼆维数组的创建
1.⼆维数组的概念
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元 素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。
2.⼆维数组的创建
二维数组的定义如下:
type arr_name[常量值1][常量值2];
例如:
int arr[3][5];
double data[2][8];
上述代码中的type和arr_name与一维数组的创建一样,分别是数组类型和自定义数组名称。
常量值1代表了该二维数组有多少行;
常数值2代表了该二维数组有多少列;
下面将在初始化中以表格的形式帮助大家理解。
六.⼆维数组的初始化
二维数组的初始化也像一维数组一样使用大括号
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
0 | 1 | 2 | 3 | 4 | |
0 | 1 | 2 | 3 | 4 | 5 |
1 | 2 | 3 | 4 | 5 | 6 |
2 | 3 | 4 | 5 | 6 | 7 |
上述表格中,第一行和第一列分别为数组的下标
二维数组在初始化时,若没有限制哪个元素填入哪行,会将大括号内的元素,按照每一行最大存储个数依次填入,一行填满列的数量大小的元素之后,再填下一行元素
二维数组在初始化不完全,即只填写了几个元素的情况下,会将其他元素初始化为0。
若想在前一行元素没输满的情况下将元素输入下一行,可以再次以大括号来将元素分行
int arr4[3][5] = {{1,2},{3,4},{5,6}};
初始化时省略⾏,但是不能省略列,因为知道列的大小,可以将已有元素按每一行有几个元素进行排列,当一行的列数满时,跳转到下一行,当元素存储完毕时,用了多少行,列数就是多少。而知道行不知道列,就不知道每一行能放多少个了。
int arr[][4] = {{1,2}, {3,4}, {5,6}};
int arr5[][5] = {1,2,3};
七.⼆维数组的使⽤
1.⼆维数组的下标
⼆维数组访问也是使⽤下标的形式的,⼆维数组是有⾏和列的,只要锁定了⾏和列就能唯⼀锁定数组中的⼀个元素。 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;
}
上述代码打印结果为7
2.⼆维数组的输⼊和输出
类似于一维数组的输入和输出,我们也可以使用循环语句来对二维数组进行元素的输入和输出
#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;
}
有关C语言数组的介绍就到这里,感谢大家观看,如有纰漏或错误,欢迎大家提出与指正。也欢迎大家来评论区提问与讨论,共同进步,谢谢大家。