1

行 = 20 と列 = 30 の垂直ペアの 2D 配列をスキャンするこの関数を作成しました。明確にするために、A から Z までのランダムな文字が配列の各要素に格納されます。

char function3 (char randchar_array[ROW] [COLUMN]) 

{
int r = 0 ;
int c = 0 ;
int vertpairs = 0;

 for (r = 0; r < ROW ; r++)
 {
     for (c = 0; c < COLUMN -1; c++)
     {
       {
       if(randchar_array[r][c] == randchar_array[r+1][c])
         vertpairs++;
       }
     }
  }

  return (vertpairs);
}

私の質問は次のとおりです。2 番目の for ステートメント " for (c = 0; c < COLUMN -1; c++)" には -1 が必要ですか。

4

1 に答える 1

3

いいえ、(垂直方向に比較する) コードからは、- 1代わりに外側のループにある必要があるようです。

randchar_array[ROW - 1 + 1][c]これで、どちらが範囲外であるかが比較され、未定義の動作が発生します。

于 2013-11-05T10:51:13.213 に答える