-4

これは単純な C コードですが、なんらかの理由でプログラムがコンパイルを拒否し、セグメンテーション フォールト 11 が発生します。助けてください

#include <stdio.h> 

typedef struct {
    int P_answer[9];
    int number;
} BOX;

int main()
{
    BOX Matrix[8][8];
    int i,j;
    int k;
    for(i=0;i<9;i++){
        for(j=0;j<9;j++){
            Matrix[i][j].number=0;
            Matrix[i][j].P_answer[0]=1;
            Matrix[i][j].P_answer[1]=2;
            Matrix[i][j].P_answer[2]=3;
            Matrix[i][j].P_answer[3]=4;
            Matrix[i][j].P_answer[4]=5;
            Matrix[i][j].P_answer[5]=6;
            Matrix[i][j].P_answer[6]=7;
            Matrix[i][j].P_answer[7]=8;
            Matrix[i][j].P_answer[8]=9;
        }
    }
}
4

2 に答える 2

15

Matrix は 8 行 8 列の配列です。各ループは 9 回反復されます。

于 2012-05-07T00:20:21.550 に答える
4

配列のインデックスは 0 から (size-1) までです。

for ループでは、0 からサイズに移行します。

それがセグメンテーション違反の理由です。

于 2012-05-07T00:21:37.727 に答える