C 语言数组

C arrays
C 语言中的数组

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

int data[100];

如何声明一个数组?

dataType arrayName[arraySize];

例如,


float mark[5];

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

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


访问数组元素

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

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

C Array declaration
声明数组

一些要点:

  • 数组的第一个索引是 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。

Initialize an array in C programming
初始化数组

这里,

mark[0] is equal to 19
mark[1] is equal to 10
mark[2] is equal to 8
mark[3] is equal to 17
mark[4] is equal to 9

更改数组元素的值

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

// make the value of the third element to -1
mark[2] = -1;

// make the value of the fifth element to 0
mark[4] = 0;

输入和输出数组元素

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

// take input and store it in the 3rd element
​scanf("%d", &mark[2]);

// take input and store it in the ith element
scanf("%d", &mark[i-1]);

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

// print the first element
printf("%d", mark[0]);

// print the third element
printf("%d", mark[2]);

// print the ith element\
printf("%d", mark[i-1]);

示例 1:数组输入/输出

// Program to take 5 values from the user and store them in an array
// Print the elements stored in the array

#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 the 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` 循环获取五个输入并将它们存储在数组中。然后,使用另一个 `for` 循环打印这些元素。


示例 2:计算平均值

// Program to find the average of n numbers using arrays

#include <stdio.h>

int main() {

  int marks[10], i, n, sum = 0;
  double 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];
  }

  // explicitly convert the sum to double
  // then calculate average
  average = (double) sum / n;

  printf("Average = %.2lf", average);

  return 0;
}

输出

Enter number of elements: 5
Enter number1: 45
Enter number2: 35
Enter number3: 38
Enter number4: 31
Enter number5: 49
Average = 39.60

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


访问数组越界元素!

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

int testArray[10];

您可以访问从 `testArray[0]` 到 `testArray[9]` 的数组元素。

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

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


多维数组

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

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

在我们结束之前,让我们用下面的挑战来检验您对 C 数组的掌握程度!

挑战

编写一个函数来添加数组的第一个和最后一个元素。

  • 该函数接受一个整数数组和一个整数 `array_size`,即数组的长度。
  • 返回数组第一个和最后一个元素的和。
  • 例如,如果 `array = [10, 20, 30, 40, 50]` 且 `array_size = 5`,则预期输出为 **60**。

视频:C 数组

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战