我知道可以增加动态分配数组的大小。

但是我可以增加静态分配数组的大小吗?如果是,怎么办?

编辑: 虽然这个问题是针对C语言的,但也要考虑其他语言。在任何其他语言中都可能吗?

有帮助吗?

解决方案

简单的答案是否定的,这不能完成。因此,名称 “静态”。

现在,很多语言都有的东西,看起来像静态分配的数组,但实际上是静态分配给一个动态分配的数组引用。那些你可以调整大小。

其他提示

在VB .NET这将是:

Redim Preserve ArrayName(NewSize)

不知道你是什么样的langauge后虽然...

和我也不会用这个命令有很多...它非常低效的。链表和不断增长的数据结构是更有效的。

不。它不是。这里有两个选项:

  1. 使用动态的
  2. 或者,冒着浪费内存的风险,如果您知道数组将存储的最大元素数,请相应地静态分配

是的,那就是C。

如果你细心的话,你可以使用alloca()。该数组是在栈中分配,但在代码风格方面,它是一个很像,如果你使用malloc(你不必虽然free它,这是自动完成的)。我会让你决定是否要称之为“静态”数组。

不。静态分配允许编译器做出各种假设,然后在编译期间将其融入到程序中。

这些假设包括:

  1. 将其他数据立即放在数组后面是安全的(不会留下增长的空间),并且
  2. 数组从某个地址开始,然后该地址成为程序机器代码的一部分;您无法在某处分配新数组(并使用它),因为对地址的引用无法更新。

(嗯,参考 可以 如果程序存储在内存中,则可以更新,但自修改程序是非常不受欢迎的,而且肯定比动态数组更麻烦。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top