原文: https://www.programiz.com/c-programming/c-arrays

在本教程中,您将学习如何使用数组。 您将借助示例学习如何声明,初始化和访问数组的元素。

C 数组 - 图1

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

  1. int data[100];

如何声明数组?

  1. dataType arrayName[arraySize];

例如,

  1. float mark[5];

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

重要的是要注意,数组的大小和类型一旦声明就无法更改。


访问数组元素

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

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

C 数组 - 图2

少量要点

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

如何初始化数组?

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

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

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

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

在这里,我们没有指定大小。 但是,当我们使用 5 个元素进行初始化时,编译器知道其大小为 5。
C 数组 - 图3

这里,

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

更改数组元素的值

  1. int mark[5] = {19, 10, 8, 17, 9}
  2. // make the value of the third element to -1
  3. mark[2] = -1;
  4. // make the value of the fifth element to 0
  5. mark[4] = 0;

输入和输出数组元素

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

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

这是打印数组单个元素的方法。

  1. // print the first element of the array
  2. printf("%d", mark[0]);
  3. // print the third element of the array
  4. printf("%d", mark[2]);
  5. // print ith element of the array
  6. printf("%d", mark[i-1]);

示例 1:数组输入/输出

  1. // Program to take 5 values from the user and store them in an array
  2. // Print the elements stored in the array
  3. #include <stdio.h>
  4. int main() {
  5. int values[5];
  6. printf("Enter 5 integers: ");
  7. // taking input and storing it in an array
  8. for(int i = 0; i < 5; ++i) {
  9. scanf("%d", &values[i]);
  10. }
  11. printf("Displaying integers: ");
  12. // printing elements of an array
  13. for(int i = 0; i < 5; ++i) {
  14. printf("%d\n", values[i]);
  15. }
  16. return 0;
  17. }

输出

  1. Enter 5 integers: 1
  2. -3
  3. 34
  4. 0
  5. 3
  6. Displaying integers: 1
  7. -3
  8. 34
  9. 0
  10. 3

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


示例 2:计算平均值

  1. // Program to find the average of n numbers using arrays
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int marks[10], i, n, sum = 0, average;
  6. printf("Enter number of elements: ");
  7. scanf("%d", &n);
  8. for(i=0; i<n; ++i)
  9. {
  10. printf("Enter number%d: ",i+1);
  11. scanf("%d", &marks[i]);
  12. // adding integers entered by the user to the sum variable
  13. sum += marks[i];
  14. }
  15. average = sum/n;
  16. printf("Average = %d", average);
  17. return 0;
  18. }

输出

  1. Enter n: 5
  2. Enter number1: 45
  3. Enter number2: 35
  4. Enter number3: 38
  5. Enter number4: 31
  6. Enter number5: 49
  7. Average = 39

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


访问元素超出范围!

假设您声明了一个由 10 个元素组成的数组。 比方说

  1. int testArray[10];

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

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

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


多维数组

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

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