动态一维数组:
#include<malloc.h>
#include<stdio.h>
int main()
{
int *a, n = 10, i;
//动态申请n个int类型的内存空间,由指针a指示首地址
a = (int *)calloc(n,sizeof(int));//calloc比malloc在内存只剩一些非常小的碎片的情况下效率高
for(i=0;i<n;i++)
{
a[i] = i+1;
}
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
free(a);
}
还是要去决定动态申请多少、多大(单块)的内存空间。在这里也没有体现出增、删这样的动态变化。蛮失败的
二维动态数组:
#include<malloc.h>
#include<stdio.h>
int **Make2DArray(int row, int col)
//创建row行col列的二维动态数组,函数返回其首地址
{
int **a, i;
a = (int **)calloc(row,sizeof(int *));
for(i=0;i<row;i++)
{
a[i] = (int *)calloc(col,sizeof(int));
}
return a;
}
void Deliver2DArray(int **a, int row)
{
int i;
for(i=0;i<row;i++)
{
free(a[i]);
}
free(a);
}
int main()
{
int i,j,c;
int row = 3,col = 4,**a;
a = Make2DArray(row,col);
c=1;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
a[i][j] = c;
c++;
}
}
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
Deliver2DArray(a,row);
return 0;
}