-4

私は本からこのサンプルプログラムを持っています.このコードには行があります ++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;
    }
4

2 に答える 2

3

++frequency[responses[RESPOSE_SIZE]]配列のベースアドレスがインクリメントされることを意味するものではありません。

これは、配列のfrequencyfrom位置の項目responses[RESPONSE_SIZE]が増分されることを意味します。コンストラクトは、位置からresponses[RESPONSE_SIZE]の配列内のアイテムです。responsesRESPONSE_SIZE

于 2013-03-02T07:22:37.823 に答える
0

インデックス演算子は、プレフィックスインクリメント演算子[]よりも優先されます。++そのため、プレフィックスのインクリメント操作は、配列ベース アドレスではなく、インデックス作成後に見つかった配列要素に適用されます。

于 2013-03-02T07:30:29.093 に答える