数据结构中的静态和动态之间有什么区别

时间:2015-01-16 19:55:08

标签: data-structures

我想知道C#中静态和动态之间的明显区别。 我在不同的博客上看过很多帖子,但我对他们的答案并不满意。

请清楚解释一下。

1 个答案:

答案 0 :(得分:0)

这些术语以多种方式使用,具体取决于具体情况。但一般来说, static 指的是早期指定或硬编码到程序中的内容,并且不容易更改。 动态指的是即时更新的内容。

例如,在C中,如果声明一个类似的数组:

int arr[100];

数组的大小是静态的:它总是100个元素。即使您使用宏,如下所示:

int arr[SIZE];

您必须更新宏定义并重新编译程序以更改数组的大小。编译器会预留一个固定的内存块来保存数组;如果它是一个局部变量,它将在函数的堆栈帧中分配内存,如果它是一个全局变量,它将在BSS段的程序启动时分配(具体细节是依赖于实现的,但这是典型的方式)。

另一方面,如果您使用:

int *arr = malloc(n * sizeof(int));

数组的大小是动态的 - 它取决于变量n的当前值,它可以取决于程序输入和其他状态。您还可以使用realloc()更改数组的大小。