跳到主要内容

C 语言数组操作

介绍

在C语言中,数组是一种用于存储相同类型数据的集合。数组中的每个元素都可以通过索引来访问,索引从0开始。数组是C语言中最基础且重要的数据结构之一,掌握数组的操作对于编写高效的程序至关重要。

数组的定义与初始化

定义数组

在C语言中,数组的定义需要指定数组的类型和大小。例如:

c
int numbers[5]; // 定义一个包含5个整数的数组

初始化数组

数组可以在定义时进行初始化:

c
int numbers[5] = {1, 2, 3, 4, 5}; // 初始化数组

如果初始化时提供的元素个数少于数组大小,剩余的元素将自动初始化为0:

c
int numbers[5] = {1, 2}; // 数组内容为 {1, 2, 0, 0, 0}

访问数组元素

数组元素通过索引访问,索引从0开始。例如:

c
int numbers[5] = {1, 2, 3, 4, 5};
int firstElement = numbers[0]; // 访问第一个元素,值为1
int thirdElement = numbers[2]; // 访问第三个元素,值为3
警告

注意:访问数组时,索引不能超出数组的范围,否则会导致未定义行为。

数组的遍历

遍历数组是常见的操作,通常使用for循环来实现:

c
int numbers[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]);
}
// 输出: 1 2 3 4 5

数组的常见操作

数组的复制

C语言中没有直接复制数组的操作符,必须通过循环逐个元素复制:

c
int source[5] = {1, 2, 3, 4, 5};
int destination[5];

for (int i = 0; i < 5; i++) {
destination[i] = source[i];
}

数组的排序

数组排序是常见的操作,可以使用标准库中的qsort函数:

c
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}

int main() {
int numbers[5] = {5, 3, 1, 4, 2};
qsort(numbers, 5, sizeof(int), compare);

for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]);
}
// 输出: 1 2 3 4 5
return 0;
}

实际应用案例

案例:计算数组的平均值

假设我们有一个存储学生成绩的数组,我们需要计算这些成绩的平均值:

c
#include <stdio.h>

int main() {
int grades[5] = {85, 90, 78, 92, 88};
int sum = 0;

for (int i = 0; i < 5; i++) {
sum += grades[i];
}

float average = (float)sum / 5;
printf("平均成绩: %.2f\n", average);
// 输出: 平均成绩: 86.60
return 0;
}

总结

数组是C语言中非常重要的数据结构,掌握数组的定义、初始化、访问和常见操作是编写高效程序的基础。通过本教程,你应该已经了解了数组的基本操作,并能够应用这些知识解决实际问题。

附加资源与练习

  • 练习1:编写一个程序,找出数组中的最大值和最小值。
  • 练习2:编写一个程序,将两个数组合并成一个新的数组。
  • 练习3:编写一个程序,实现数组的反转。
提示

建议初学者多动手实践,通过编写代码来加深对数组操作的理解。