跳到主要内容

C语言的数组

提示
  1. 数组的定义和声明:数组是可以存储多个值的变量。数组的声明需要指定数据类型和数组大小,例如int data[100];
  2. 访问和初始化数组元素:通过索引访问数组元素(例如mark[0]),可以在声明时初始化数组(例如int mark[5] = {19, 10, 8, 17, 9};)。
  3. 数组元素的输入输出和平均值计算:使用循环从用户输入数组元素并输出,可以计算数组元素的平均值。注意不要访问数组的界限之外的元素,以免出现未定义行为。

C语言数组

数组是一种可以存储多个值的变量。例如,如果您想存储100个整数,您可以创建一个数组。

int data[100];

如何声明数组?

数据类型 数组名[数组大小];

例如,

float mark[5];

这里,我们声明了一个浮点类型的数组mark,其大小为5。意味着它可以存储5个浮点值。

需要注意的是,一旦声明了数组的大小和类型,就不能改变。

访问数组元素

您可以通过索引访问数组的元素。

假设您声明了一个数组mark,如上所述。第一个元素是mark[0],第二个元素是mark[1],依此类推。

C语言数组声明

几个关键点

  • 数组的第一个索引是0,不是1。在这个例子中,mark[0]是第一个元素。
  • 如果数组的大小为n,要访问最后一个元素,使用n-1索引。在这个例子中,是mark[4]。
  • 假设mark[0]的起始地址是2120d。那么,mark[1]的地址将是2124d。类似地,mark[2]的地址将是2128d等等。 这是因为float的大小是4字节。

如何初始化数组?

在声明时可以初始化数组。例如,

int mark[5] = {19, 10, 8, 17, 9};

您也可以这样初始化数组。

int mark[] = {19, 10, 8, 17, 9};

这里,我们没有指定大小。然而,编译器知道其大小是5,因为我们用5个元素进行了初始化。

C编程中初始化数组

这里,

mark[0] 等于 19
mark[1] 等于 10
mark[2] 等于 8
mark[3] 等于 17
mark[4] 等于 9

更改数组元素的值

int mark[5] = {19, 10, 8, 17, 9}

// 将第三个元素的值改为-1
mark[2] = -1;

// 将第五个元素的值改为0
mark[4] = 0;

输入和输出数组元素

下面是如何从用户那里获取输入并将其存储在数组元素中。

// 获取输入并存储在第三个元素中
scanf("%d", &mark[2]);

// 获取输入并存储在第i个元素中
scanf("%d", &mark[i-1]);

下面是如何打印数组的单个元素。

// 打印数组的第一个元素
printf("%d", mark[0]);

// 打印数组的第三个元素
printf("%d", mark[2]);

// 打印数组的第i个元素
printf("%d", mark[i-1]);

示例1:数组输入/输出

// 程序从用户那里获取5个值并将它们存储在数组中
// 打印存储在数组中的元素

#include <stdio.h>

int main() {

int values[5];

printf("输入5个整数: ");

// 获取输入并存储在数组中
for(int i = 0; i < 5; ++i) {
scanf("%d", &values[i]);
}

printf("显示整数: ");

// 打印数组的元素
for(int i = 0; i < 5; ++i) {
printf("%d\n", values[i]);
}
return 0;
}

输出

输入5个整数: 1
-3
34
0
3
显示整数: 1
-3
34
0
3

这里,我们使用了for循环从用户那里获取5个输入并将它们存储在数组中。然后,使用另一个for循环,这些元素被显示在屏幕上。

示例2:计算平均值

// 程序使用数组计算n个数字的平均值

#include <stdio.h>

int main() {

int marks[10], i, n, sum = 0;
double average;

printf("输入元素个数: ");
scanf("%d", &n);

for(i=0; i < n; ++i) {
printf("输入数字%d: ",i+1);
scanf("%d", &marks[i]);

// 将用户输入的整数加到sum变量
sum += marks[i];
}

// 显式将sum转换为double
// 然后计算平均值
average = (double) sum / n;

printf("平均值 = %.2lf", average);

return 0;
}

输出

输入元素个数: 5
输入数字1: 45
输入数字2: 35
输入数字3: 38
输入数字4: 31
输入数字5: 49
平均值 = 39.60

这里,我们计算了用户输入的n个数字的平均值。

访问数组边界外的元素!

假设您声明了一个包含10个元素的数组。比如说,

int testArray[10];

您可以访问数组元素从testArray[0]testArray[9]

现在假设您尝试访问testArray[12]。该元素不存在。这可能会导致意外的输出(未定义行为)。有时您可能会遇到错误,有时您的程序可能会正确运行。

因此,您永远不应该访问数组边界之外的元素。

多维数组

在本教程中,您学习了数组。这些数组被称为一维数组。

在下一个教程中,您将学习多维数组(数组的数组)