简体   繁体   中英

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]]; 
} 

I don't understand ++count[optionList[i]] . Is it a loop increment for both array 'count 'and 'optionList'? How does it work?

optionList - is an array of 20 elements
count - is an array of 6 elements

the for loop iterates over i = 0 to inclusively i = 20 - 1 = 19 .
In each iteration step it executes ++count[optionList[i]];

Let's calculate ++count[optionList[i]]; for i=3 step by step: First we look at optionList[i] , so we take the i-th element from optionList . The 3rd element from optionList (beginning to count from 0) is 2. So ++count[optionList[i]] evaluates to ++count[2] . ++value means incrementing the value behind value by one. ++count[2] means that the 2nd element from count is increased by one. So after executing ++count[optionList[i]]; the array count now looks like this: {0, 0, 1, 0, 0, 0} (if it looked like this {0, 0, 0, 0, 0, 0} before)

Conclusion

Look at optionList as an array of indices. The loop increments count at every index from optionList .

It you think about this from the "inside out" way, the optionList[i] gets evaluated first. This returns the value at optionList[i]

ex) If i = 0 , optionList[i] = 4

Then the count[{value}] gets evaluated.

ex) If i = 0 , optionList[i] = 4 . count[optionList[i]] is the same as count[4] in this case.

So the fourth spot in the count array then gets incremented by the prefix ++ . The loop essentially goes through and increments the value of the count array at each location specified by optionList[i] .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM