文章目录
数组
数组的概念
数组是一组相同类型元素的集合。
要理解相同类型元素指的是什么,我们就要先了解,数组和变量一样也是有类型的。
比如:
int arr[3] = { 1,2,3};
上述是一组整型类型的数组,而我们所说的数组是一组相同类型元素的集合,其中元素指的是存放在arr数组中的“值”,一组相同类型则是指其中的元素也是整型类型的。
数组的基本语法
在上面我们举了一个例子:
int arr[3] = { 1,2,3 };
int 指的是数组中存放数据的类型,可以是:char、short、int、float等等;
arr 指的是数组名,数组名可以根据实际情况,起的有意义就好;
[] 中的常量值是用来规定数组大小的,根据实际需要规定;
{} 中存放的则是数组中的元素。
一维数组
数组也分一维数组、二维数组和多维数组,如上述举的例子则是一维数组。
比如:想存放某个班级的全班的数学成绩,则可以创建一个数组。
int arr[40];
当然数组的大小可以根据实际情况去创建,不同的情况也可以创建不同类型的数组,如下:
int arr1[40];
char arr2[10];
一维数组的使用
一维数组的创建和初始化
创建一个数组,就像创建一个变量一样,需要给它一个初始值,这就成为初始化。
数组的初始化分为:完全初始化、不完全初始化、错误的初始化和不初始化。
初始化使用大括号,将数组放入大括号内。
//完全初始化
int arr1[3] = { 1, 2, 3};
//不完全初始化
int arr2[3] = { 1, 2};
//错误的初始化,超出了数组的大小
int arr3[3] = { 1, 2, 3, 4};
不完全初始化的结果
不完全初始化中,剩余的值编译器默认为0。
错误初始化的结果
在初始化中,初始化的初始值不能超过规定的数组大小,否则会报错。
不初始化
和变量一样,在创建的时候最好初始化一下,数组也是一样,而数组在创建的时候不初始化的话,数组中放的就是随机值。
这里因为编译器的原因,没有完全显示出效果,但也可以看出初始化的结果。
数组下标
在C语言中数组是有下标的,下标是从0开始,假设数组中有n个元素,最后一个元素的下标是n-1,下标如同于小区的门牌号,通过下标就可以找到元素。
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
C语言中对于数组元素访问提供了一个操作符[ ],这个操作符叫:下标引用操作符。
有了下标引用操作符就可以访问数组的元素了,比如访问下标为7的元素,就可以使用arr[7]来访问下标7的元素。
再比如我们去访问下标为8的元素,如下:
ps: 下标引用操作符中是填写的是下标,不是元素。如果你对8和9的结果感到疑惑的话,那么就是你理解成下标引用操作符中填写的是元素,而不是下标。如果还有疑惑,关于下标的介绍中还有一张图片,下标8对应的就是元素7,下标9对应的是元素8。
数组元素的打印
#include <stdio.h>
int main()
{
int arr[] = { 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;
}
二维数组
二维数组的概念
前面学习的数组叫一维数组,数组的元素都是内置的,如果我们把一维数组当做是数组的元素,这就是二维数组。二维数组的上面是三维数组,甚至多维数组,但是二维数组是较为常用的。
int arr[3][5];
int —数组类型;
arr—是数组名,可以按照自己的想法创建;
3—代表这个数组有3行;
5—代表中国数组一行里有5个元素。
二维数组的创建和初始化
在创建变量和数组的时候给一个初始值,就是初始化。
二维数组的初始化是怎么呢?和一维数组一样,也是拿大括号初始化。
int arr1[3][5] = { 1,2 };
int arr2[3][5] = { 0 };
初始化也分为完全初始化和不完全初始化。
完全初始化
int arr1[3][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };
不完全初始化
int arr2[3][5] = { {1,2}, {3,4}, {5,6} };
二维数组的使用
二维数组的下标
二维数组和一维数组差不多,但二维数组多了行和列,所以在使用上会有所差异。
二维数组下标的访问,只要确定行和列就可以找到相应的数组元素。
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[1][3]);
return 0;
}
使用下标访问数组元素,第1行第3个,锁定的就是5。
在二维数组中,可以省略行,但不能省略列。
简单来说,省略的行,会根据初始化是数组的数量来创建数组的行数。
从下面的代码示例,可以看出最终由多少行。
int main()
{
int arr[][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };
return 0;
}
在以上的代码示例和讲解中,我们可以看出,数组在内存中是连续存放的。