在C语言中,申请一般数组时,数组大小必须是常量。即使是赋了特定值的变量,也不行,比如:int n=3;int a[3];这样的做法是错误的,我们需要动态申请数组内存,如下申请一个动态整数(int)二维数组:
#include<stdio.h>
#include<stdlib.h>
int **pp(int m,int n)
{
int i,j,**pa;
pa=(int **)malloc(sizeof(int)*m);//m行的存储空间
for(i=0;i<m;i++)
pa[i]=(int*)malloc(sizeof(int)*n);//n列的存储空间
for(i=0;i<m;i++)
for(j=0;j<n;j++)
pa[i][j]=0;
return pa;
}
main()
{
int m,n,i,j,**haha;
printf("请输入二维数组的行和列:");
scanf("%d%d",&m,&n);
haha=pp(m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d\t",haha[i][j]);
printf("\n");
}
}
效果如下图所示:
结构体也一样,以下定义一个结构体student,为了简单起见,就用一个属性sAge,我们来看看怎样动态申请内存。
#include<stdio.h>
#include<stdlib.h> //引用指针空间}
结果如下图所示:
二维数组,结构体动态申请内存空间,布布扣,bubuko.com
原文:http://blog.csdn.net/lucky51222/article/details/20200637