C 数组

本文介绍在 C 语言中如何声明、初始化和访问数组的元素。

数组是可以存储多个值的线性容器,数组是一种很常用的数据结构。例如,如果要存储 100 个整数,可以为其创建一个数组。

int data[100];

C 数组
C 数组

声明数组

声明数组的语法:

dataType arrayName[arraySize];

例如,

float mark[5];

在这里,我们声明了一个浮点类型的数组 mark,它的大小是 5。意思是,它可以容纳 5 个浮点值。

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

访问数组元素

数组的元素可以通过索引访问,数组的索引值从 0 开始。

假设你声明了一个数组 mark[5]。第一个元素是 mark[0],第二个元素是 mark[1],最后一个元素是 mark[4]

C 数组声明

数组说明

  • 数组的第一个索引是 0,而不是 1。在这个例子中, mark[0] 是第一个元素。
  • 如果数组的大小是 n, 那么最后一个元素的索引是 n-1
  • 数组内存地址是连续的。假设起始地址 mark[0]2120d,那么 mark[1] 的地址是 2124dmark[2] 的地址是 2128d 等。这是因为 float 类型的大小是 4 个字节。

初始化数组

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

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

你也可以像这样初始化一个数组。

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

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

在 C 语言编程中初始化数组

更改数组元素的值

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],由于该元素不可用。这可能会导致意外输出或者错误。

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

多维数组

在本教程中,我们介绍了一维数组。在下一个教程中,我们将介绍多维数组