一维数组

定义:int a[6]在内存中开辟6个4字节的空间,空间名叫a。

TKMG0H.png

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

①数组的创建:在创建数组时,我们必须定义数组的类型和大小,数组的大小不能为0,数组中的元素类型都是相同的。若为int型则都为int型。

(数组个数绝对不能超过最大容量)
int a[0];//[]内必须是常量/常量表达式(3+8),不能是一个变量(x...)
int a[最大容量(数组个数)]={元素}

②数组的初始化:在数组创建时,我们也可以为数组初始化。当然也可以不初始化,根据实际要求判断是否初始化。

int arr1[3] = {1, 2, 3};//下标是从0开始到n-1结束
int arr2[] = {1, 2, 3};//在这里,我们arr[3]里边的数字可以不用写;
int arr3[3] = {1, 2};//也是可以的,只是把最后一个数初始化为0了而已,也就是自动补0
int arr4[3] = {1, 2, 3, 4};//是不可以的,不能超过数组长度  
int arr5[5] = {};//此时数组未初始值,默认为{0,0,0,0,0}
char arr5[3] = {'a', 98, 'c'};//因为是字符类型,所以98其实就是字符'b'
char arr6[] = "abcdef";

③printf和表达式的数组引用与数组定义的区别

我们定义一个整型数组,让数组最大容量为10,则有10个元素,再用printf输出数组下标。
int a[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d",a[5]);

输出结果

TKMd9P.png

a[5]下标是5,则是1 2 3 4 5 6

                  下标0 1 2 3 4 5 对应元素是6

2.矩阵数组(若看的费劲请看②矩阵数组进阶理解)

int a[3][4] = {11,12,13,14,15,16,17,18,19,20,21,22}
int a[3][4] = {{11,12,13,14},{15,16,17,18},{19,20,21,22}}

其中a[3][4]表示对后面数组元素进行矩阵组合,3行4列。

则有

11 12 13 14

15 16 17 18

19 20 21 22

printf("%d",a[2][1]);

①假如要输出第下标2.1,则从0开始是第一行,则是行为第二行,列为第一行列。

 0     1     2     3  //下标对应的列数

0 11 12 13 14

1 15 16 17 18

2 19 20 21 22

//下标对应的行数

解答:则输出的是19

注意:定义数组的时候是定义指定长度的数组。但printf和表达式中引用的是数组的下标,不是引用所有数组元素。


②矩阵数组进阶理解

int a[3][4] = {{11,12,13,14},{15,16,17,18},{19,20,21,22}}

下标----0123
----行/列1234
0111121314
1215161718
2319202122

当我输入printf("%d",$a[1][2]),我们知道数组在printf和表达式中引用的数组的下标,而不是数组元素,只有定义一个数组的时候才会存在所有元素,所有这里的a[1][2]表示打印“行下标为1,列下标为2的数”则为17

也有以下公式可表达

行下标+1=行数

列下标+1=列数

最后修改:2021 年 12 月 21 日
如果觉得我的文章对你有用,请随意赞赏