#include "stdio.h"
#include
#include
#define NULL 0
#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 **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;
}
{
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;
}