创建后重新初始化数组

时间:2016-05-29 12:30:56

标签: arrays

出于纯粹的兴趣,为什么大多数编程语言不允许程序员在创建数组后重新初始化。

实施例

int apples[4][4]

apples[0][1] = "blue"

apples = apples[8][8] // Reinitialise the array with a new size of 8x8

apples[7][4] = "purple"

解释我的意思

正如你在上面看到的,我创建了一个4x4的数组,然后我分配了一个值,然后我重新初始化了相同的数组,新的大小为8x8,然后我分配了另一个值。从理论上讲,我更倾向于破坏旧数组的内容(因此我的新8x8数组在0x1处没有该值)。

但是,我已经搜索过高低,但我还没有找到任何解释为什么编程语言会强制执行此限制的内容。在我看来,允许这样做似乎非常有益,我无法看到任何直接的问题。但显然存在一个问题,否则这是允许的。

问题

所以我的问题是:编程语言不允许程序员在创建数组后重新初始化的原因是什么?

1 个答案:

答案 0 :(得分:0)

初始化可以在代码未处于运行状态之前完成,这就是为什么初始化只能在代码中进行一次,如果你正在初始化同一个数组,它已经超出创建阶段,现在处于运行阶段的第二次

为了更好的清晰度,数组的大小在编译时需要是一个常量,因为它可能会在某个地方的代码中使用。

int i=arr.lenght;
if(i<5)
{
//do something}

您可以在c中使用realloc()调整动态数组的大小,并使用arrayList的集合属性,但不要重新初始化。