C中数组内部数组的增量

Increment of array inside array in C

#include <stdio.h>

#define NUMBER 20                                         

#define OPTION 6 

void main ()
{

    int optionList[NUMBER]= 
        {4,4,5,2,1,3,1,0,4,3,3,1,2,5,4,2,3,4,3,1}; 

    int count[OPTION] = { 0 } ;

    for (int i = 0; i <= NUMBER-1; i++) 
        ++count[optionList[i]]; 
} 

我不明白 ++count[optionList[i]]。它是数组'count'和'optionList'的循环增量吗?它是如何工作的?

如果您从“由内而外”的方式考虑这个问题,optionList[i] 首先得到评估。 returns optionList[i]

处的值

ex) 如果 i = 0, optionList[i] = 4

然后 count[{value}] 得到评估。

ex) 如果 i = 0optionList[i] = 4count[optionList[i]] 在这种情况下与 count[4] 相同。

因此 count 数组中的第四个位置将增加前缀 ++。循环实质上遍历并递增 count 数组在每个由 optionList[i].

指定的位置的值

optionList - 是一个包含 20 个元素的数组
count - 是一个包含 6 个元素的数组

for 循环遍历 i = 0 以包含 i = 20 - 1 = 19
在每个迭代步骤中,它执行 ++count[optionList[i]];

让我们逐步计算 i=3 的 ++count[optionList[i]];: 首先我们查看 optionList[i],因此我们从 optionList 中取出第 i 个元素。 optionList(从0开始数)的第3个元素是2。 因此 ++count[optionList[i]] 的计算结果为 ++count[2]++value 表示将 value 后面的值加一。 ++count[2] 表示 count 的第 2 个元素增加 1。所以在执行 ++count[optionList[i]]; 之后,数组 count 现在看起来像这样: {0, 0, 1, 0, 0, 0} (如果它看起来像 {0, 0, 0, 0, 0, 0} 之前)

结论

optionList 视为索引数组。 循环在 optionList.

的每个索引处递增 count