C语言之申请动态数组

使用malloc() 来申请动态数组,但是记得当不需要数组的时候,要及时在程序当中对申请的空间进行释放。

#include <stdio.h>
#include <malloc.h>

char *alloc_array_init();    //使用malloc首先申请一个最基本的内存空间
void alloc_array_add(char *p,int total_element,char c);   //向申请的内存空间里面填数据
void alloc_array_show(char *p);    //打印数组

int main(void){
    char *alloc_array,*pr_alloc_array;
    alloc_array = alloc_array_init();

    for( int i = 0; i < 8; i++){
        alloc_array_add(alloc_array, 8, 'a'+i);
    }
    alloc_array_show(alloc_array);
    free(alloc_array);     //当不需要这个数组的时候,要及时释放内存,以防止造成内存泄漏。
    printf("\r\r\n%d",alloc_array[50]);
    alloc_array_show(alloc_array);

    return 0;
}

char *alloc_array_init(){
    int total_element = 8;    //初始空间的长度,单位是字节数
    char * alloc_array;        //用来接收malloc申请下来的内存空间的初始地址
    alloc_array = malloc(4);       //申请内存空间
    return alloc_array;
}

void alloc_array_add(char *p,int total_element,char c){
    static int now_element = 0;             //创建一个局部静态变量,用来显示内存空间填充了多少位(单位就是自己定义的类型)
    char * array = p;                       //用来外部传来的内存空间的起始地址
    if(now_element > total_element-1){      //判断添加的字节数是否超出初始的内存大小
        array = (char *)realloc(p, 1);    //当得知此时添加的内存字节数超出了初始定义的内存大小,则使用realloc()函数对内存空间在原来的基础上进行延伸。

        if(NULL == array)
            printf("expand array is failed!");
        else
         p = array;     //只有当内存申请成功以后,才可以把
    }
    
    p[now_element] = c;
    p[now_element+1] = '\0';
    now_element++;
}

void alloc_array_show(char *p){
    char *pr;
    for(pr = p; *pr != '\0'; pr++){
        printf("%c ",*pr);
    }
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值