目录
本节内容要点:
数组简介
在
for
循环中使用数组如何创建并初始化数组
编写处理数组的函数
二维数组
10.1 数组
在 C
语言中,一组数据的集合称为数组(C Primer Plus中:数组[array
是按照顺序存储的一系列类型相同的值)] Array
,比如:字符串 char ,实际上也算是数组,字符串由多个字符构成;
数组中的每一个数据叫做数组元素 Element
,数组中的每个元素都有一个序号,这个序号从 0
开始,称为下标
Index
,例如,a[0] 表示第0个元素,a[3] 表示第3个元素。数组是一个整体,它的内存是连续的:
字符数组和字符串的内存示意图
10.1.1 定义数组并初始化
定义数组 要想把数据放入内存,必须先要分配内存空间。例如:放入 4 个整数,就得分配 4 个 int 类型的内存空间:
//整形数组
int a[4] = {1,2,3,4}; //数组长度为4,只能存放4个元素
//浮点数数组
float a[4] = {1.0,2.0,3.0,4.0}; //数组长度为4,只能存放4个元素
//浮点数数组
double a[4] = {1.0,2.0,3.0,4.0}; //数组长度为4,只能存放4个元素
//字符串
char a[4] = "1234"; //数组长度为4,只能存放4个元素
注意
1.数组中每个元素的数据类型必须相同,例如:int a[4],每个元素都必须为 int ;
2.数组长度 length 最好是整数或者常量表达式;
3.访问数组元素时,下标的取值范围为 0≤ index < length;
4.数组是一个整体,它的内存是连续的,内存示意图:
10.1.2 初始化数组
1. 定义数组同时赋值
整形数组
int a[4] = {1,2,3,4};
浮点数数组
float a[4] = {1.0,2.0,3.0,4.0};
双精度浮点数数组
double a[4] = {1.0,2.0,3.0,4.0};
字符串
char a[5] = "1234";
2. 根据数组下标对数组元素赋值
a[4];
a[0]=20;
a[1]=345;
a[2]=700;
a[3]=22;
等价于:
a[4] = {20,345,700,22};
3. 只给部分元素赋初值
// 案例一
int a[10]={12, 19, 22 , 993, 344};
等价于:
int a[10]={12, 19, 22 , 993, 344, 0, 0, 0, 0, 0};
4. 将数组所有元素初始化为0
int a[10]={0};
等价于:
int a[10]={0, 0, 0 , 0, 0, 0, 0, 0, 0, 0};
注意:
int a[10]={1};
等价于:
int a[10]={1, 0, 0 , 0, 0, 0, 0, 0, 0, 0};
若要所有元素为1:
int a[10]={1, 1, 1 , 1, 1, 1, 1, 1, 1, 1};
5. 给全部元素赋值且不指定数组长度
int a[]={0,2,4,6,8};
等价于:
int a[5]={0,2,4,6,8};
10.1.3 访问数组
数组元素通过下标访问,例如:
#include <stdlib.h>
#include <stdio.h>
void main()
{
int a[10] = { 12, 19, 22 , 993, 344 };
printf("index:%d value:%d\n", 0, a[0]);
printf("index:%d value:%d\n", 2, a[2]);
printf("index:%d value:%d\n", 4, a[4]);
printf("index:%d value:%d\n", 8, a[8]);
system("pause");
}
10.1.4 修改数组
可通过下标修改数组元素,例如:
#include <stdio.h>
int main()
{
int a[5]={12, 19, 22 , 993, 344};
printf("index:%d value:%d\n",0,a[0]);
printf("index:%d value:%d\n",1,a[1]);
printf("index:%d value:%d\n",2,a[2]);
printf("index:%d value:%d\n",3,a[3]);
printf("index:%d value:%d\n",4,a[4]);
printf("-------------------------------------------\n");
// 修改数组的值
a[0] = 100;
a[1] = 200;
a[2] = 300;
a[3] = 400;
a[4] = 500;
printf("index:%d value:%d\n",0,a[0]);
printf("index:%d value:%d\n",1,a[1]);
printf("index:%d value:%d\n",2,a[2]);
printf("index:%d value:%d\n",3,a[3]);
printf("index:%d value:%d\n",4,a[4]);
}
10.2 在for循环中使用数组
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
int len = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
for (int i = 0; i < len; i++) {
printf("数组元素[%d]的值为:%d
", i, arr[i]);
}
return 0;
}
补充其它两种语言的写法:
使用Python`进行遍历数组
# 一维数组(列表)
arr = [1, 2, 3, 4, 5]
for item in arr:
print(item)
# 也可以使用索引
for i in range(len(arr)):
print(arr[i])
# 二维数组(列表)
arr2 = [[1, 2, 3], [4, 5, 6]]
for row in arr2:
for elem in row:
print(elem, end=' ')
print() # 换行
使用
Java
进行遍历数组
// 一维数组
int[] arr = {1, 2, 3, 4, 5};
for (int i : arr) {
// 使用增强型for循环遍历
System.out.print(i + " ");
}
// 也可以使用传统索引方式
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
// 二维数组
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + " ");
}
System.out.println(); // 换行
}
在C语言中,使用for循环遍历数组的方法如下:
首先,确定数组的长度,即元素个数。
使用for循环,从0开始遍历到数组长度减1。
在循环体内,通过下标访问数组元素并进行相应的操作。
10.2.1 数组遍历原理
在 C / C++
数组定义和初始化中详细的介绍了关于数组五种初始化方法,这些初始化方式其实在开发中还是蛮实用的;
对于数组元素的访问和修改是通过数组下标的方式来解决的,数组遍历的原理也是一样,通过 while
循环或者 for
循环直接遍历数组下标从而达到访问或者修改数组值的目的;
📕需要注意的是:
1.数组中每个元素的数据类型必须相同,例如:int
a[4],每个元素都必须为 int
;
2.数组长度 length 最好是整数或者常量表达式;
3.访问数组元素时,下标的取值范围为 0 ≤ index < length
;
4.数组是一个整体,它的内存是连续的;
10.2.2 数组遍历实战
1.遍历数组查询数组中的元素
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
int target = 3; // 要查找的目标元素
int count = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
for (int i = 0; i < count; i++) {
if (arr[i] == target) {
printf("找到目标元素:%d
", target);
break;
}
}
if (target != 3) {
printf("未找到目标元素");
}
return 0;
}
2.遍历数组修改数组中的元素
确定数组长度:需要知道数组的长度,即元素的个数。这可以通过
sizeof(arr)/sizeof(arr[0])
来计算得到,其中arr是数组名。选择合适的循环结构:可以使用
for
循环、while
循环或do-while
循环来遍历数组。编写循环体:在循环体内,通过数组下标访问每个元素,并进行相应的操作。例如,可以对数组元素进行加法、减法、乘法等运算,或者将数组元素替换为新的值。
处理修改后的结果:如果需要输出修改后的数组,可以在循环结束后再次遍历数组并打印出每个元素的值。
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
int count = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
for (int i = 0; i < count; i++) {
arr[i] = arr[i] * 2; // 将数组元素乘以2
}
// 输出修改后的数组
for (int i = 0; i < count; i++) {
printf("数组元素[%d]的值为:%d
", i, arr[i]);
}
return 0;
}