C语言动态分配数组程序实现

#include "stdio.h"
#include
#include
#define NULL 0
void **darray_new(int row, int col, int size) //size是每个分配元素内存的空间
{
     void **arr;
     arr = (void **) malloc(sizeof(void *) * row + size * row * col);//分配数组的个数所占的空间及每行的指针。
     if (arr != NULL)
     {
          int *head;
          head = (int *) arr + sizeof(int *) * row;
          memset(arr, 0, sizeof(void *) * row + size * row * col);
          while (row--)
             arr[row] = head + size * row * col;
     }
     return arr;
}

void darray_free(int**arr)
{
    if (arr != NULL)
    free(arr);
}
int main()
{
    int i,j;
    int **a;
    a = (int **)darray_new(3,3,4);//动态生成3*3的int数组
    for ( i = 0;i<3;i++)//赋值
    {
         for ( j = 0; j < 3; j++)
         {
             a[i][j] = i + j;
         }
    }

    for ( i = 0;i<3;i++)//打印
    {
        for ( j = 0; j < 3; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }

    darray_free(a);//释放内存
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值