C 数组
本文介绍在 C 语言中如何声明、初始化和访问数组的元素。
数组是可以存储多个值的线性容器,数组是一种很常用的数据结构。例如,如果要存储 100 个整数,可以为其创建一个数组。
int data[100];
声明数组
声明数组的语法:
dataType arrayName[arraySize];
例如,
float mark[5];
在这里,我们声明了一个浮点类型的数组 mark
,它的大小是 5
。意思是,它可以容纳 5
个浮点值。
需要注意的是,数组的大小和类型一旦声明就不能更改。
访问数组元素
数组的元素可以通过索引访问,数组的索引值从 0
开始。
假设你声明了一个数组 mark[5]
。第一个元素是 mark[0]
,第二个元素是 mark[1]
,最后一个元素是 mark[4]
。
数组说明
- 数组的第一个索引是
0
,而不是1
。在这个例子中,mark[0]
是第一个元素。 - 如果数组的大小是
n
, 那么最后一个元素的索引是n-1
。 - 数组内存地址是连续的。假设起始地址
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 个元素初始化它。
更改数组元素的值
int mark[5] = {19, 10, 8, 17, 9}
// 将第 3 个元素的值设置为 -1
mark[2] = -1;
// 将第 4 个元素的值设置为 0
mark[4] = 0;
输入和输出数组元素
下面介绍了如何从用户那里获取输入并将其存储在数组元素中。
// 将用户输入的数字存储到数组的第 3 个位置
scanf("%d", &mark[2]);
// 将用户输入的数字存储到数组的第 i 个位置
scanf("%d", &mark[i-1]);
以下是打印数组中单个元素的方法。
// 打印数组的第 1 个元素
printf("%d", mark[0]);
// 打印数组的第 3 个元素
printf("%d", mark[2]);
// 打印数组的第 i 个元素
printf("%d", mark[i-1]);
示例 1:数组输入/输出
以下示例程序将用户输入的 5 个数字存在数组中,然后输出数组中的值
#include <stdio.h>
int main() {
int values[5];
printf("Enter 5 integers: ");
// taking input and storing it in an array
for(int i = 0; i < 5; ++i) {
scanf("%d", &values[i]);
}
printf("Displaying integers: ");
// printing elements of an array
for(int i = 0; i < 5; ++i) {
printf("%d\n", values[i]);
}
return 0;
}
输出
Enter 5 integers: 1
-3
34
0
3
Displaying integers: 1
-3
34
0
3
在这里,我们使用了一个 for
循环从用户那里获取 5 个输入并将它们存储在一个数组中。然后,使用另一个 for
循环,将这些元素打印在屏幕上。
示例 2:计算平均值
以下示例计算数组中的所有数的平均值。
#include <stdio.h>
int main()
{
int marks[10], i, n, sum = 0, average;
printf("Enter number of elements: ");
scanf("%d", &n);
for(i=0; i<n; ++i)
{
printf("Enter number%d: ",i+1);
scanf("%d", &marks[i]);
// adding integers entered by the user to the sum variable
sum += marks[i];
}
average = sum/n;
printf("Average = %d", average);
return 0;
}
输出
Enter n: 5
Enter number1: 45
Enter number2: 35
Enter number3: 38
Enter number4: 31
Enter number5: 49
Average = 39
在这里,我们计算了用户输入的 n
个数字的平均值。
访问超出其边界的元素!
假设您声明了一个容量为 10 个元素的数组。比如:
int testArray[10];
您可以使用从 testArray[0]
到 testArray[9]
访问数组元素。
现在假设您尝试访问 testArray[12]
,由于该元素不可用。这可能会导致意外输出或者错误。
因此,您永远不应该访问超出数组边界的元素。
多维数组
在本教程中,我们介绍了一维数组。在下一个教程中,我们将介绍多维数组。