本文中的代码都在Visual Studio(版本为2022)软件中运行,在使用scanf函数记得在第一行写下面的代码:
#define _CRT_SECURE_NO_WARNINGS
数组的概念:数组是一种基础的数据结构,用于在计算机内存中连续存储相同类型的数据。
数组的特点:数组中数据的类型是相同的;
数组的长度是固定的,一旦数组定义之后,其长度不会改变;
数组的索引值是从0开始的;
数组的长度减一就是数组中最大的下标
一维数组的语法规则:
type arr_name[常量值];
type是数组的类型,类型可以为int、float、char等类型
arr_name是数组名
[]中的常量值是定义数组的大小的
一维数组的使用:
定义一个长度为5的一维整型数组,其中的数据为1 2 3 4 5:
int arr[5] = {1, 2, 3, 4, 5};
一维数组的初始化:
int arr[5] = { 1, 2, 3, 4, 5 }; //完全初始化,初始化了数组中的所有元素 int arr[5] = { 1, 2 }; //只初始化了前两个元素,其它的元素默认为0 int arr[5] = { 1, 2, 3, 4, 5, 6 }; //初始化错误,初始化的项超过了数组长度 int arr[] = { 0 }; //根据元素初始化的个数,决定向内存申请空间的大小
一维数组的输出:
①用for循环输出数组的元素
#include <stdio.h> int main() { int arr[5] = { 1, 2, 3, 4, 5 }; //定义了一个长度为5的整形数组,其储存的值为1 2 3 4 5 for (int i = 0; i < 5; i++) //用for循环遍历数组 { printf("%d\n", arr[i]); } return 0; }
运行结果:
1 2 3 4 5
②用数组的索引值(也就是下标)输出数组的元素:
#include <stdio.h> int main() { int arr[5] = { 1, 2, 3, 4, 5 }; //定义了一个长度为5的整形数组,其储存的值为1 2 3 4 5 printf("%d\n", arr[3]); //输出索引值为3的数据 return 0; }
运行结果:
4
数组的输入:
#include <stdio.h> int main() { int arr[5] = { 0 }; //初始化数组,数组中的所有元素默认为0 //使用for循环在一维数组中输入元素(这里是数值) for (int i = 0; i < 5; i++) //用for循环和scanf()函数依次输入元素 { scanf("%d", &arr[i]); } //使用for循环输出一维数组中的元素 for (int i = 0; i < 5; i++) //再使用for循环输出数组中的元素 { printf("%d ", arr[i]); } return 0; }
以输入
1 2 3 4 5
为例,则输出结果为:
1 2 3 4 5
二维数组的语法规则:
type arr_name[常量值1][常量值2];
type是数组的类型,类型可以为int、float、char等类型
arr_name是数组名
[]中的常量值1控制行数,常量值2控制列数
二维数组的使用:
定义一个行为2列为3的二维整形数组,数组的所有元素为0:
int arr[2][3] = { 0 };
二维数组的初始化:
注意:在初始化二维数组时,能省略行,但不能省略列
二维数组的行和列的索引值都是从0开始的
int arr[2][3] = { 1,2 }; //第一行第一列的元素为1,第一行第二列的元素为2。其余的元素都默认为0 int arr[2][3] = { {1, 2}, {3, 4} } //第一行第一列和第二列的元素分别为1 2,第三列的元素默认为0 //第二行第一列和第二列的元素分别为3,4,第三列的元素默认为0 int arr[][5] = { 0 }; //根据元素初始化的个数和列数决定向内存申请空间的大小
二维数组的输出:
①用for循环输出二维数组的元素:
#include <stdio.h> int main() { int arr[2][3] = { 1,2 }; for (int i = 0; i < 2; i++) //外层for循环控制行数 { for (int j = 0; j < 3; j++) //内层for循环控制列数 { printf("%d ", arr[i][j]); } printf("\n"); //第一行输出结束时,换行 } return 0; }
运行结果:
1 2 0 0 0 0
②用二维数组的索引值(也就是下标)输出元素:
#include <stdio.h> int main() { int arr[2][3] = { 1,2 }; printf("%d", arr[1][2]); //输出行索引值为1,列索引值为2的元素 return 0; }
运行结果为:
0
二维数组的输入:
#include <stdio.h> int main() { int arr[2][3] = { 0 }; //二维数组中的所有元素默认为0 //用两个for循环在二维数组中输入元素(这里是数值) for (int i = 0; i < 2; i++) //外层for循环控制行数 { for (int j = 0; j < 3; j++) //内层for循环控制列数 { scanf("%d", &arr[i][j]); } } for (int i = 0; i < 2; i++) //外层for循环控制行数 { for (int j = 0; j < 3; j++) //内层for循环控制列数 { printf("%d", arr[i][j]); } printf("\n"); //第一行输入完后,换行 } return 0; }
以输入
1 1 1 2 2 2
为例,则运行结果为:
111 222
二维数组与一维数组之间的关系:
只要将一个一维数组看作是另一个一维数组的元素,那么这个一维数组实际上就是二维数组。
计算数组长度的方法:
我们可以使用关键字sizeof计算数组的大小,单位是字节。
#include <stdio.h> int main() { int arr[10][2] = {0}; printf("%d\n", sizeof(arr)); //输出数组的大小 printf("%d\n", sizeof(arr[0][0])); //输出数组一个元素的大小 printf("%d\n", sizeof(arr) / sizeof(arr[0][0])); //输出数组中元素的个数 return 0; }
运行结果:
80 4 20