无法理解这段代码的某些部分?

时间:2013-03-02 07:18:44

标签: c

我有一本书的示例程序,在这段代码中有一行 ++frequency[responses[RESPOSE_SIZE]];。我无法理解我们如何递增数组基址?我可能是个傻瓜?但我仍然没有看到任何逻辑...请一些人帮助我....谢谢!

    int main()
    {
          int answer, rating;

           int frequency[FREQUENCY_SIZE] = {5};

           int responses[RESPOSE_SIZE] ={1,2,3,4,5,6,7,8,9,10,

                1,6,3,8,6,10,3,8,2,7,6,5,7,6,8,6,7,5,6,6, 

                5,6,7,5,6,4,8,6,8,10};

       for(answer = 0; answer<RESPOSE_SIZE; answer++)
       {

          ++frequency[responses[RESPOSE_SIZE]];
       }

       printf( "%s%17s\n", "Rating", "Frequency" );

       for(rating=1; rating<FREQUENCY_SIZE; rating++)
       {
          printf( "%6d%17d\n", rating, frequency[ rating ] );

       }

        return 0;
    }

2 个答案:

答案 0 :(得分:3)

++frequency[responses[RESPOSE_SIZE]]并不意味着数组的基地址递增。

这意味着位置frequency中数组responses[RESPONSE_SIZE]中的项目会递增。构造responses[RESPONSE_SIZE]是位置responses中数组RESPONSE_SIZE中的项。

答案 1 :(得分:0)

[]索引运算符的优先级高于++前缀增量运算符。因此,前缀增量操作应用于索引后找到的数组元素,而不是数组基址。