2012-04-13 64 views
0

是否可以聲明一個大小爲1的數組,並能夠在其中存儲5個元素,然後檢索它們?數組大小小於no。存儲在其中的元素

我嘗試了一個這樣的代碼,我宣佈了一個數組arr[1],然後在其中存儲了5個元素。實際上可以存儲5個元素!它怎麼樣?

+2

你的編程語言是什麼? – 2012-04-13 08:56:06

+0

取決於編程語言。所以無法給出明確的答案。 – 2012-04-13 09:11:18

+0

我想他是在談論C.當然。 – Surya 2012-04-15 09:38:01

回答

2

如果這是C(或C++),你可以很輕鬆地存儲比數組更多元素的大小爲:

#include <stdio.h> 

int main (void) { 
    int x = 0; 
    int a[1]; // so that a[0] is the only valid element 
    a[1] = 7; // write beyond end of array 

    printf ("x=%d, &a[0]=%p, &a[1]=%p, &x=%p\n", x, &(a[0]), &(a[1]), &x); 
    return 1; 
} 

,然而這樣做,會導致不確定的行爲,很可能改寫一些其他一塊信息,並不是一個好主意。

在我的系統,該代碼上面打印:

x=7, &a[0]=0xbf9bb638, &a[1]=0xbf9bb63c, &x=0xbf9bb63c 

儘管我設置x爲零,從來沒有明確地改變了它的事實。這是因爲超出陣列末尾的寫入影響了它(正如您可以從a[1]x的兩個相同地址中看到的那樣)。