出于纯粹的兴趣,为什么大多数编程语言不允许程序员在创建数组后重新初始化。
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处没有该值)。
但是,我已经搜索过高低,但我还没有找到任何解释为什么编程语言会强制执行此限制的内容。在我看来,允许这样做似乎非常有益,我无法看到任何直接的问题。但显然存在一个问题,否则这是允许的。
所以我的问题是:编程语言不允许程序员在创建数组后重新初始化的原因是什么?
答案 0 :(得分:0)
初始化可以在代码未处于运行状态之前完成,这就是为什么初始化只能在代码中进行一次,如果你正在初始化同一个数组,它已经超出创建阶段,现在处于运行阶段的第二次
为了更好的清晰度,数组的大小在编译时需要是一个常量,因为它可能会在某个地方的代码中使用。
int i=arr.lenght;
if(i<5)
{
//do something}
您可以在c中使用realloc()
调整动态数组的大小,并使用arrayList
的集合属性,但不要重新初始化。