C-数组

时间:2020-02-23 14:31:52  来源:igfitidea点击:

在本教程中,我们将学习C编程语言中的数组。

假设我们要存储一个玩家的5个比赛的得分。
可以说分数是浮点数,即小数部分。
因此,解决此问题的一种方法是声明5个" float"类型变量。

//score of 5 matches of a player
float score_1 = 10;
float score_2 = 12.6;
float score_3 = 20.1;
float score_4 = 19.8;
float score_5 = 22;

您可以通过查看上述方法来猜测问题。

我们正在创建太多逻辑连接的变量。
想象一下,如果我们必须存储100个匹配项的分数,那么按照上述为每个匹配项创建一个新的" float"变量的方法,我们最终将拥有100个变量" score_1"," score_2"等。

什么是数组?

数组是相关数据项的固定大小顺序排列的集合,我们通过通用名称引用此项集合。

数组是派生类型。

数组类型

我们可以将数组分为3种类型。

  • 一维阵列
  • 二维阵列
  • 多维数组

一维数组

以下是一维数组的语法。

type arrName[size];

其中,"类型"是我们要使用的任何数据类型,例如" int"," float"等。
而且," arrName"是数组变量的名称。

然后,我们有了方括号,其中包含一个整数值大小,该大小告诉我们可以存储在数组变量中的值的总数。

存储在数组中的值称为数组的元素。

例如,如果我们要创建一个名为score的数组,其大小为5,并执行float,那么我们将编写以下代码。

float score[5];

上面的代码指示计算机为5个float类型的数据值分配内存空间,我们可以如下表示分数数组。

注意!数组元素被索引,这意味着它们由索引号引用。

在上图中,我们可以看到数组score的第一个元素在索引0处。
第二个元素在索引1处。
类似地,作为第5个元素的最后一个元素在索引4处。

数组索引从0开始。
因此,如果数组有10个元素(大小= 10),则第一个元素在索引0处,最后一个元素在索引(大小-1)处,即9。

要为给定索引设置值,我们编写以下代码。

arrName[index] = value;

因此,如果我们想将5个匹配项的得分存储在数组"得分"中,我们可以编写以下代码。

//save score of the 5 matches
score[0] = 10;
score[1] = 12.6;
score[2] = 20.1;
score[3] = 19.8;
score[4] = 22;

我们可以如下表示分数数组中的值。

通过编写以下代码,我们可以将数组的创建和值的分配结合起来。

type arrName[size] = {
  value_1,
  value_2,
  value_3
};

因此,如果我们想存储一个球员的5场比赛的得分,那么我们可以编写以下内容。

//create the score array and assign value
float score[5] = {
  10,
  12.6,
  20.1,
  19.8,
  22
};

在上面的代码中,我们创建了一个类型为float的数组变量,并将其命名为score
然后,我们将存储5个匹配项的分数。

数组初始化的类型

数组初始化有两种类型。

  • 编译时间初始化
  • 运行时初始化

编译时间初始化

在编译时初始化时,我们在声明时设置数组的值。

下面给出了编译时初始化的一般语法。

type arrName[size] = { value1, value2, ... };

例如,如果我们要创建类型为" int"的数组" points"并要存储3个值10、20和30,则将编写以下代码。

int points[3] = {10, 20, 30};

省略尺寸

如果设置所有值,则可以忽略大小。

在下面的示例中,我们省略了大小,并且编译器仍将分配足够的空间来存储3个值。

int points[] = {10, 20, 30};

自动填充

如果我们设置大小但提供较小的值,则其余数组索引位置将填充默认值。

在下面的示例中,我们创建了一个大小为5的数组" points",但只设置了两个值10和20。
因此,剩余索引将设置为0。

int points[5] = {10, 20};

//if we print the elements of the array points
//we will get 10, 20, 0, 0, 0
for (i = 0; i < 5; i++) {
  printf("%d\n", points[i]);
}

在数组中输入的元素不要超过数组的大小,否则会给您带来错误。

以下代码将给出错误。

int arr[5] = {1, 2, 3, 4, 5, 6};

运行时初始化

我们还可以在运行时通过在程序运行时设置数组的元素来初始化数组。

在下面的示例中,我们将创建一个大小为3的数组" num",并在运行时设置该数组的元素。

#include <stdio.h>
int main(void)
{
  //variable
  int num[5], i;
  
  //user input
  printf("Enter 5 integer values: ");
  for (i = 0; i < 5; i++) {
    scanf("%d", &num[i]);
  }
  
  //output
  printf("Entered values:\n");
  for (i = 0; i < 5; i++) {
    printf("%d\n", num[i]);
  }
  
  printf("End of code\n");
  return 0;
}
Enter 5 integer values: 10 20 30 40 50
Entered values:
10
20
30
40
50
End of code

在下一个教程中,我们将学习二维数组。