2012-04-16 2 views
0

ここで何が間違っているのか教えていただけますか?Cのマルチ・ディム・アレイ

int arr[15][1]; 
int main() 
{ 
    int x; 
    for(x=0; x<15; x++) 
    { 
    arr[x][0] = x; 
    arr[x][1] = x;  
    } 
    int y; 
    for(y=0; y<15; y++) 
    { 
    printf("[%d][0]=%u\t", y, arr[y][0]); 
    printf("[%d][1]=%u\n", y, arr[y][1]); 
    } 
} 

それは私に次の出力を与える、私はのための出力は[0] [0] [0] [1]のためのように0、0であるべきでながら、間違っているかを把握することはできません残り?

ここ
[0][0]=0    [0][1]=1 
[1][0]=1    [1][1]=2 
[2][0]=2    [2][1]=3 
[3][0]=3    [3][1]=4 
[4][0]=4    [4][1]=5 
[5][0]=5    [5][1]=6 
[6][0]=6    [6][1]=7 
[7][0]=7    [7][1]=8 
[8][0]=8    [8][1]=9 
[9][0]=9    [9][1]=10 
[10][0]=10    [10][1]=11 
[11][0]=11    [11][1]=12 
[12][0]=12    [12][1]=13 
[13][0]=13    [13][1]=14 
[14][0]=14    [14][1]=14 
+0

配列のサイズは '[15] [2]'である必要があります。 – trutheality

+0

'int arr [15] [2]'にする必要があります。 – jweyrich

答えて

6

int arr[15][1]; 

あなたは15x1要素の配列を宣言(二次元の指標第一次元の0-14および0-0程度)、その後、0と1の要素を設定します2番目の次元の第2次元の要素1が存在しないので、arr[x][1] = x;arr[x+1][0] = x;

と基本的に同じです。配列は、要素を格納する連続したメモリです。多次元配列は、配列の配列として使用することもできます.2番目の次元は、最初の次元時間のサイズを再現します。あなたは二次元をoverindexはときに、あなたが最初の次元の次の要素にアクセスしている

これもarr[x][1] = xx==14

あなたが最も可能性の高い2つの要素を持っていることを意図する場合、アレイ用に割り当てられていないメモリにアクセスすることを意味します配列を次のように宣言します。

int arr[15][2]; 
+0

:-(私より速い+1 – Endophage