0
是否可以聲明一個大小爲1的數組,並能夠在其中存儲5個元素,然後檢索它們?數組大小小於no。存儲在其中的元素
我嘗試了一個這樣的代碼,我宣佈了一個數組arr[1]
,然後在其中存儲了5個元素。實際上可以存儲5個元素!它怎麼樣?
是否可以聲明一個大小爲1的數組,並能夠在其中存儲5個元素,然後檢索它們?數組大小小於no。存儲在其中的元素
我嘗試了一個這樣的代碼,我宣佈了一個數組arr[1]
,然後在其中存儲了5個元素。實際上可以存儲5個元素!它怎麼樣?
如果這是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
的兩個相同地址中看到的那樣)。
你的編程語言是什麼? – 2012-04-13 08:56:06
取決於編程語言。所以無法給出明確的答案。 – 2012-04-13 09:11:18
我想他是在談論C.當然。 – Surya 2012-04-15 09:38:01