以下是动态申请a[m][n]的源代码
代码一:
/*
编译器:DEV C++
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int **a;
int i,j,m,n;
scanf("%d%d",&m,&n);
a = (int **)malloc(sizeof(int *)*m);
for (i=0;i<m; i++){
a[i] = (int *)malloc(sizeof(int)*n);
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
a[i][j]=i*j+10;
printf("a[%d][%d]:%d ",i,j,a[i][j]);
}
printf("\n");
}
return 0;
}
代码二(对代码一进行了简化):
/*
编译器:DEV C++
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,n;
int i,j;
scanf("%d%d",&m,&n);
//二维数组也是线性的存储结构
int (*a)[n]=(int(*)[n])(malloc(sizeof(int)*m*n));
for(i=0;i<m;i++){
for(j=0;j<n;j++){
a[i][j]=i*j+10;
printf("a[%d][%d]:%d ",i,j,a[i][j]);
}
printf("\n");
}
return 0;
}
注意:
不同的编译器对语法要求的严格性是不一样的,例如有的编译器在编译期时要求二维数组的第二维的值要是一个定值有的则没有要求,有的编译器则对强制转换不怎有要求的有的则要求比较严,注意对不同的编译器不同对待,“以不变应万变”。
本文提供了两种使用C语言动态创建二维数组的方法,并展示了如何初始化及打印数组元素。代码适用于DEVC++编译器。
3万+

被折叠的 条评论
为什么被折叠?



