动态数组允许元素的数量根据需要增加。 它们被广泛用于计算机科学算法中。在以下程序中,我们动态创建并调整数组的大小.
例1.动态分配数组空间
#include <stdio.h> int main() { int * arr_dynamic = NULL; int elements = 2, i; arr_dynamic = calloc(elements, sizeof(int)); //Array with 2 integer blocks for (i = 0; i < elements; i++) arr_dynamic[i] = i; for (i = 0; i < elements; i++) printf("arr_dynamic[%d]=%d\n", i, arr_dynamic[i]); elements = 4; arr_dynamic = realloc(arr_dynamic, elements * sizeof(int)); //reallocate 4 elements printf("After realloc\n"); for (i = 2; i < elements; i++) arr_dynamic[i] = i; for (i = 0; i < elements; i++) printf("arr_dynamic[%d]=%d\n", i, arr_dynamic[i]); free(arr_dynamic); }
动态内存分配是根据您的编程需求手动分配和释放内存。 动态内存是通过指针进行管理和服务的,这些指针指向我们称为堆的区域中新分配的内存空间。您可以在运行时动态创建和销毁元素数组,而不会出现任何问题。
<stdlib.h>库具有负责动态内存管理的函数,这些函数可以在 <stdlib.h> 头文件中找到:
注意:void * 类型表示未确定类型的指针。C、C++ 规定 void * 类型可以通过类型转换强制转换为任何其它类型的指针。
动态存储分配摘要:
- 我们可以通过根据需要在堆中创建内存块来动态管理内存;
- 在动态内存分配中,内存是在运行时分配的;
- 动态内存分配允许操作大小灵活的字符串和数组,并且可以在程序中随时更改它们;
- 当您不知道某个特定结构要占用多少内存时,就需要这样做;
- Malloc是一个动态内存分配函数,代表内存分配,该内存分配将具有特定大小的内存块初始化为垃圾值;
- Calloc是连续的内存分配函数,可一次将多个内存块分配为0;
- Realloc用于根据指定的大小重新分配内存;
- Free释放功能用于清除动态分配的内存。
wer
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!