2012-04-16 19 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 2012-04-16 04:25:10

+0

它應該是'int arr [15] [2]'。 – jweyrich 2012-04-16 04:25:16

回答

6

這裏

int arr[15][1]; 

聲明15X1元件(因此指數0-14用於第二維的第一維度和0-0),然後設置0和1元件的陣列的第二個維度。由於沒有第二維的元素1,因此arr[x][1] = x;arr[x+1][0] = x;相同

基本上,數組是存儲元素的連續內存。多維數組可以作爲數組的數組:第二維表示第一維時間的大小。所以,當你overindex進行第二個維度,您正在訪問的第一維的下一個元素

這也意味着arr[x][1] = x訪問,這不是爲數組分配時x==14

你最有可能意味着有兩個元素內存在第二維中,聲明數組爲:

int arr[15][2]; 
+0

:-(比我快,+1 – Endophage 2012-04-16 04:26:19