1.什么是数组?
在之前的博客的代码演示里面就有着许多的数组。那么到底什么是数组呢?数组本质上其实就是相同类型的变量的集合。
2.数组的声明(使用数组前的准备)
数组的声明包含指定元素类型、变量名、元素个数 。让我们来写个存储20个整型数据的数组举例
元素类型 int 变量名 arr 元素个数 [20]——>int arr[20]
需要注意的一点就是在C环境下,数组不支持变长数组,也就是说数组的元素个数必须是常量。
3.访问数组(数组的使用方法)
在C语言学习系列第三步的操作符中,我们曾讲到【】操作符,而这个恰好是作为数组下标运算符用来访问数组的元素。比如,我们要访问上数组中的第十个元素:
printf("%d",arr[9])
可以看到访问第十个元素,但为什么里面写的是九呢?因为我们是通过下标来访问,【】中的数称为下标。下标表示为首元素后的第几个元素,而不是数组中的第几个元素。也可以记忆为下标从0开始往后数。 注意是在访问过程里不要越界,比如访问-1位置或者超出元素个数的位置。
4.遍历数组
按照顺序逐个查看元素的方法被称为遍历。
#include <stdio.h>
int main()
{
int arr[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
{
printf("%d",arr[i]);
}
return 0;
}
5.数组初始化
数组初始化被我简单分为三种:
5.1标准初始化
int arr[5]={1,2,3,4,5};
标准初始化意思就是对声明的每个数组里的元素赋予初值。
5.2自动生成元素个数初始化
int arr[]={1,2,3,4,5};
由上述代码块观察,当我们不给定初始元素个数,数组会根据初始值的个数来确定元素个数
5.3用0来初始化
int arr[5]={1.2};
这种是将剩下三个元素用零初始化
int arr[5]={0};
这种是用0初始化全部元素
6.输入数组的值
从键盘输入则需要我们第一节讲过的scanf函数和第三节讲过的取地址符配和读取。
#include <stdio.h>
int main()
{
int arr[5]={0};
for(int i=0;i<5;i++)
{
scanf("%d",&arr[i]);
}
return 0;
}
7.多维数组
多维数组意思很简单就是多个数组集合在一起形成的数组。比如二维数组就是以一维数组为元素的数组,二维以上的统称为多维数组。
二维数组其实就像一个矩阵,各元素纵横排列。拿个4行3列的例子,其书写形式
a【4】【3】
也就是说这是一个包含四个一维数组的数组。行代表一维数组个数,列代表一维数组元素个数。
二维数组的元素:a【0】、a【1】、a【2】、a【3】
而一维数组的元素则被称之为二维数组的构成元素。
其实无论是一维数组还是多维数组在内存中都是连续存储的。
来讲讲二维数组初始化,我将其分为4种:
7.1标准初始化
#include <stdio.h>
int main()
{
int arr[2][4]={{1,2,3,4},{5,4,3,2,};
return 0;
}
标准的意思就是对其元素个数和构成元素个数声明清楚,并且赋予初值时带上括号,表示一个元素。
7.2一行不满列数
#include <stdio.h>
int main()
{
int arr[2][4]={{1,2,4},{5,4,3,2,};
return 0;
}
观察上图,当一行列数未满时,默认剩余元素为0
7.3不规定行数
这个是要注意的,二维数组可以不规定行数,但必须给一定列数,当一行列数满后,自动换行,由初值决定行数
7.4对每行不用大括号
若对每一行元素不用大括号括住,则按序满一行自动换行
8.留个小尾巴
其实数组这部分还有一些难点,比如数组传参、数组名性质,但这需要和函数结合起来阐述,所以留在下一篇超长博客里面讲解。大家要在看后做一些简单的习题更好掌握数组这块知识
数组复制
数组逆序
数组查值