1、数组的概念
数组是一组相同类型元素的集合;它是由某种类型的数据按照一定的顺序组成的,用下标来指示数组中元素的序号。
2、一维数组的创建和初始化
2.1 数组创建
type arr_name[常量值];
存放在数组的值被称为数组的元素,数组在创建的时候开业指定数组的大小和数组的元素类型。
- type指定的是数组中存放数据的类型,可以是:char、short、int、floa等,也可以自定义的类型。
- arr_name指的是数组名的名字,这个名字根据实际情况,起的有意义就行。
- [ ]中的常量值是用来指定数组的大小,这个数组的大小是根据实际的需求指定就行。
例:存储某个班级20人的数学成绩
int math[20];
当然我们也可以根据需要创建其他类型和大小的数组;
char ch[8]
double score[10];
2.2 数组的初始化
数组的初始化可以用以下方法实现:
(1)对数组中的每一个元素赋初值(完全初始化)
int arr[5] = {1,2,3,4,5};
(2)只给一部分元素赋初值(不完全初始化)
int arr[5] = {4,5};
(3)对数组的全部元素赋初值时,可以不知道数组长度
int arr[ ] = {1,2,3,4,5};
2.3 数组的类型
数组也是有类型的,数组算是一种自定义类型,去掉数组名留下的就是数组的类型。
如下:
int arr1[5]; //整型
char arr2[5]; //字符型
float arr3[5]; //单精度浮点型
double arr4[5]; //双精度浮点型
3、一维数组的使用
3.1 数组下标
C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标是n-1,下标就相当于数组元素的编号,如下:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
数组下标: 0 1 2 3 4 5 6 7 8 9
数组元素在内存中是连续存放的
C语言中给数组的访问提供了一个操作符:[ ],这个操作符叫:下标引用操作符。
例:访问下标为7的元素和下标为3的元素
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", arr[7]);
printf("%d\n",arr[3]);
return 0;
}
输出结果:
3.2 数组元素的遍历打印
例:创建一个数组,使用for循环遍历打印
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
输出结果:
3.3 数组的输入
例:根据自己的需求,给数组输入想要的数据
#iinclude <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//输入元素
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
//打印元素
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
输出结果:
4、sizeof计算数组元素个数
sizeof在C语言中是一个关键字,是可以计算类型或者变量大小的,其实sizeof也可以计算数组的大小
例:计算数组元素个数
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//sizeof(arr)是计算数组所占内存空间的总大小,单位是字节
//sizeof(arr[0])是计算数组中一个元素的大小,单位是字节
//sizeof(arr) / sizeof(arr[0]计算除数组的元素个数
int size = sizeof(arr) / sizeof(arr[0]);
printf("%d", size);
return 0;
}
这里的结果是:10,表示数组有10个元素。
5、二维数组的创建
type arr_name[常量值1][常量值2];
例如:
int arr[3][5];
double date[2][3];
6、二维数组的初始化
二维数组的初始化可以用以下方法实现:
(1)对数组中的每一个元素赋初值(完全初始化)
//所有元素的初值写在一对花括号内
int arr[3][4] = {1,2,3,4, 2,3,4,5, 3,4,5,6};
//分行给二维数组赋初值,每行数据用一对花括号括起来,各行之间用逗号隔开
int arr[3][4] = {{1,2,3,4}, {2,3,4,5}, {3,4,5,6}};
(2)只给一部分元素赋初值(不完全初始化)
int arr[3][4] = {1,2,3};
int arr[3][4] = {{1},{2},{3}};
int arr[3][4] = {{1},{2,0,5},{3}};
(3)按行为数组的部分元素赋初值,则定义数组时对第一维的长度可以不指定,但是第二维的长度不能省(初始化时,可以省略行,但是不能省略列)
int arr[ ][4] = {1,2,3,4,5,6,7};
7、二维数组的使用
7.1 二维数组的下标
C语言规定,二维数组的行是从0开始,列也是从0开始的,如下所示:
int arr[3][4] = {1,2,3,4, 2,3,4,5, 3,4,5,6};
0 1 2 3 4
0
| 1 | 2 | 3 | 4 | 5 |
2 | 3 | 4 | 5 | 6 | |
3 | 4 | 5 | 6 | 7 |
arr数组
7.2 二维数组的输入和输出
例:输入数组元素,并循环遍历打印出所有元素
#include <stdio.h>
int main()
{
int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };
int i = 0;//遍历⾏
//输⼊
for (i = 0; i < 3; i++) //产⽣⾏号
{
int j = 0;
for (j = 0; j < 5; j++) //产⽣列号
{
scanf("%d", &arr[i][j]); //输⼊数据
}
}
//输出
for (i = 0; i < 3; i++) //产⽣⾏号
{
int j = 0;
for (j = 0; j < 5; j++) //产⽣列号
{
printf("%d ", arr[i][j]); //输出数据
}
printf("\n");
}
return 0;
}
输出结果: