北碚歇马隧道:动态分配二维数组(C语言)

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 20:11:20
#include <Stdio.h>
#include <stdlib.h>

int main(void)
{
char **p ;
int a=2, b=0 ;

p = (char**)malloc(sizeof(char)*a);//分配空间
if(p == NULL)
{
exit(1);
}
for(b=0; b < a; b++)
{
*(p+b) = (char*)malloc(sizeof(char)*20);
if(p == NULL)
{
exit(1);
}
}//end

for(b=0; b < a; b++)//使用空间
{
gets( *(p+b) );

}//end

for(b=0;b < a; b++)//释放空间
{
free( *(p+b) );
*(p+b) = NULL ;
}
free(p);
p = NULL ;//end

getchar();
return 0 ;
}
我写的 不知道有没有写错 那里可以改进

对一位数组,不知道数组大小可以这样做:
int *a;
int i,n;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
这样就相当于C++的定义:
int n;
int a[n];
cin>>n;

对2位数组操作如下:
int **a;
int i,m,n;
scanf("%d %d",&m,&n);
*a=(int **)malloc(m*sizepf(int *));
for (i=0;i<m;i++)
a[i]=(int *)malloc(n*sizeof(int));
这样就相当于C++的定义:
int m,n;
int a[m][n];
cin>>m>>n;