Menu Close

动态数组

动态数组允许元素的数量根据需要增加。 它们被广泛用于计算机科学算法中。在以下程序中,我们动态创建并调整数组的大小.

例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

 

READ  C语言 - 指针和字符串
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts