首先提一嘴:
如果你是想要用一个变量来作为数组声明时的大小,C99就已经早已实现了。
array[size];
完全没有问题,不过数组的大小并不会随着size变化而变化。
然后:
你知道那些可以任意调节大小的数组是怎么实现的吗?
其实非常简单:
1.先把数据存在一个固定大小的数组里。
2.地方不够了,就再开一个更大的固定数组,然后把数据复制进去。
好了,现在你还对这些看起来比较聪明的数组感兴趣吗?
C语言的数组,本身是指针的变形,表示每次到基址的某个偏移量去取值。
所以在C语言里,负下标和数组越界都能编译通过。题主会不会因此而发狂?
int a = -1;
int b[2];
int c =-2 ;
printf("%d",b[-1]); // 输出?