我有一本书的示例程序,在这段代码中有一行
++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;
}
答案 0 :(得分:3)
++frequency[responses[RESPOSE_SIZE]]
并不意味着数组的基地址递增。
这意味着位置frequency
中数组responses[RESPONSE_SIZE]
中的项目会递增。构造responses[RESPONSE_SIZE]
是位置responses
中数组RESPONSE_SIZE
中的项。
答案 1 :(得分:0)
[]
索引运算符的优先级高于++
前缀增量运算符。因此,前缀增量操作应用于索引后找到的数组元素,而不是数组基址。