我想知道C#中静态和动态之间的明显区别。 我在不同的博客上看过很多帖子,但我对他们的答案并不满意。
请清楚解释一下。
答案 0 :(得分:0)
这些术语以多种方式使用,具体取决于具体情况。但一般来说, static 指的是早期指定或硬编码到程序中的内容,并且不容易更改。 动态指的是即时更新的内容。
例如,在C中,如果声明一个类似的数组:
int arr[100];
数组的大小是静态的:它总是100个元素。即使您使用宏,如下所示:
int arr[SIZE];
您必须更新宏定义并重新编译程序以更改数组的大小。编译器会预留一个固定的内存块来保存数组;如果它是一个局部变量,它将在函数的堆栈帧中分配内存,如果它是一个全局变量,它将在BSS段的程序启动时分配(具体细节是依赖于实现的,但这是典型的方式)。
另一方面,如果您使用:
int *arr = malloc(n * sizeof(int));
数组的大小是动态的 - 它取决于变量n
的当前值,它可以取决于程序输入和其他状态。您还可以使用realloc()
更改数组的大小。