是否有可能宣布规模1的阵列,并能存储5种元素在里面,然后检索这些?
我尝试一个这样的代码,其中我声明阵列arr[1]
然后存储5个元素进去。 它实际上是可以存储5个元素! 它曾是怎样的?
是否有可能宣布规模1的阵列,并能存储5种元素在里面,然后检索这些?
我尝试一个这样的代码,其中我声明阵列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
)。