一.数组的概念
数组是用来存放一个或多个数据的,但数组存放的个数不能为零。 数组存放的数据类型都是一样的。
2.一维数组创造和初始化
2.1一维数组的创造
type arr_name[常量值];
存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。 • type 指定的是数组中存放数据的类型,可以是: char、short、int、float 等,也可以⾃ 定义的类型 • arr_name 指的是数组名的名字,这个名字根据实际情况,起的有意义就⾏。 • [] 中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。 比如我们想要存放5门考试的成绩
int mark[5];
我们需要存储的数据类型是整数所以这里用了 int 要存放5门成绩,[]写入了5;
2.2一维数组的初始化
有时候我们需要给数组一个初始值
int arr[5]={1,2,3,4,5};
一般都是用大括号{}来定义数组的数值 我们这里的话在{}存入了5个整型的数值 这样的初始化就称为完全初始化 []定义要存入5个数据,{}刚好存入了5个数据
int arr[]={1,2,3};
int arr[4]={1};
像这样初始化数组也是这样的话一般被称为不完全初始化数组
int arr[5]={1,2,3,4,5,6};
但是像这样初始化是错误的这样数组只会读取到5 ,5后面的数是不会读取的
3.一维数组的运用
3.1用 printf 输出数组的每位数值
int arr[5[={1,2,3,4,5};
//下标 0,1,2,3,4
数组的下标对应数组的每一位
下标是从0开始的
下面简单的给大家演示一下
这里输出数组的下标0-4对应的就是数值1-5;
当然可以用之前学过的for循环来输出数组的下标
i 的值初始化为0;循环5次每次 i 加1
这样运行的结果和上面是一模一样的
3.2用 scanf 输入数组的每一位数值
我们一样用for循环来完成输入每一位下标的数值
这里我们虽然已经初始化了数组的数值
但是我们是可以替换数组的值的
我们用 scanf 分别输入了 5 4 3 2 1
执行结果就是打印了我们输入的数值
因为我们输入的值分别替换对应下标的每一位
4.二维数组的概念
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元 素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。
int arr1[5];
int arr2[5];
|
int arr[2][5];
这就是二维数组的大概意思
4.1二维数组的创立
我们如何定义二维数组呢
type arr_name[常量值1][常量值2];
例如:
int size[5][5];
type:是数组的类型 arr_name:是数组的名字 [常量值1]:表示数组的有多少行 [常量值2]:代表数组的每行有多少元素,即表示列
4.2二维数组的初始化
二维数组的初始化其实和一维数组一样,不一样的是一维数组只需要初始化一行,而二维数组则需要初始化多行。
int size[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12};
这样就是比较规范的完全初始化 数组有 3 行,每行有 4 个元素。
5.二维数组的运用
5.1用printf打印二维数组
二维数组的下标也是从零开始 但是二维数组的下标有俩个
int size[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12};
下 0 1 2 3
标 ____________
0 | 1 2 3 4
1 | 5 6 7 8
2 | 8 9 10 11
二维数组的下标的 行 与 列 分别都是从零开始的
对应的:size[0][0]==1;
所以想要按顺序打印二维数组的话
要按顺序打印每行的 4 个元素
这里变成用 for 循环的话
行不变,列变,打印出来的结果是一样。
所以想要打印数组的每个元素只需要用 for 的嵌套循环即可以完成
5.2用scanf输入元素给二维数组
同理可以利用二维数组的下标来输入元素
这里我们更换下标 0,0的元素为20
打印出来 size[0][0] 的值就是20
6.怎么样计算数组的元素个数
数组的大小和它的类型和元素和个数有关 char类型的大小就是一个字节 int 类型的大小就是四个字节
char arr1[]={1,2};
int arr2[]={1,2};
sizeof(arr1)=8;
sizeof(arr2)=2;
我们可以用sizeof计算数组的大小
那怎么计算出数组的元素个数:
我们只需要拿总数组的大小除数组一个元素的大小即可。
就得出了数组的元素个数。