数组是一组有序的、类型相同的数据的集合,这些数据被称为数组的元素。
概念理解:
数组用于存储一组数据
数组里面存储的数据类型必须是相同的
数组在内存中会开辟一块连续的空间
在C99的标准之前,当数组在创建时,方括号内的数组元素个数只能是常量,使用的常量也必须是真正意义上的常量,比如用const修饰的变量有了常属性,但不是真正意义的常量,而由define定义的常量可以用来做数组元素个数。而C99之后数字方括号内的元素可以使用变量,而使用变量的做数组元素个数的数组,叫做变长数组。
int arr[10] = {0};
for(int i = 0;i < 10;i++)
{scanf("%d",&arr[i];
}char str[10] = {0};
scanf("%s",str);//字符串赋值可以不取地址和循环
一维数组的元素地址是连续的,也就是元素的地址一个紧挨着一个。地址在内存是以二进制进行存储的,但是如果以二进制来展示的话就会非常的长而且也未必好理解,所以就由十六进制来进行展示。(下图)观察下图可发现,地址的是由低到高随着下标增长而增长的,有规律的递增,且每个数组元素地址都相差了四个字节,相差的四个字节是一个int整形的空间大小。
int arr[3][3] = {1,2,3,4};//4自动存到arr[1][0]的位置
int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};//一个大括号代表一行,每个大括号以逗号隔开
int arr[][3] = {0};//二维数组可以不初始化行,但必须初始化列
二维数组在我们的逻辑概念中可以是一个矩阵,但在内存中与一维数组一样是一个连续的地址空间。通常我们将二维数组的第一个方括号看做行,第二个方括号看做是列。
二维数组的创建和初始化
二维数组与一维数组只是多加了一个方括号。数据类型 + 数组名[元素个数][元素个数];
二维数组的赋值
给二维数组赋值,与一维数组一样都需要循环来搞定,但是二维数组需要在一维数组的循环基础上再嵌套一层循环。
任意一个数组不管有多复杂,它都只有两个组成部分
第一部分:说明这是一个数组并确定元素的个数以及数组名字
第二部分:确定该数组中每一个元素所存放的数据类型