C语言如何建立一个二维数组

就是建立一个二维数组但是数组的长宽要随着变量的变化而变化。很急
给我点具体点的啊,他们说的都有道理但是这也太难为我这个初学的了,最好能给我举个例写源代码

刚刚看错了,原来是C语言,这样就好了.
输入m,n

int m,n;
int i,j;
scanf("%d%d",&m,&n);
int **mm=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
mm[i]=(int*)malloc(n*sizeof(int));

这就建了一个二维数组mm[m][n]了.
使用时,就直接mm[i][j]就可以了.

先输入行数m,列数n
然后输入一个m*n的矩阵
然后输出这个矩阵.

#include <stdio.h>
#include <malloc.h>
void main() {
int m,n;
int i,j;
scanf("%d%d",&m,&n);
int **mm=(int**)malloc(sizeof(m*sizeof(int*)));
for(i=0;i<m;i++)
mm[i]=(int*)malloc(sizeof(n*sizeof(int)));
for(i=0;i<m;i++) {
for(j=0;j<n;j++)
scanf("%d",&mm[i][j]);
}
for(i=0;i<m;i++) {
for(j=0;j<n;j++)
printf("%d ",mm[i][j]);
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-10
http://www.pcworld.com.cn/how_to_use/1/2006/1222/9180.shtml
C语言中实现动态分配二维数组
第2个回答  2008-10-10
1L不负责任,不给具体的,只让人看文章!

这你的用动态内存来实现!

int *pD = (int*)molloc(m*n*sizeof(int));//声明一个数组!
*(pD+(i-1)*n+j);//调用数组的第ij个元素。
第3个回答  2019-09-06
这样的输出是不正确的。(我这里输出是-72
-66
-60,可能你那不是这结果)。
1、a[b]是二维中的首维数组了,如果真是取其数据的话,应该用指针才对(也就是*a[b])
2、数组起始索引是从0开始的,而你用了b=1
-
3
的循环(越界了),b应该从0--2做循环
3、如果你是按如下代码的话,输出就是:147

for(b=0;b<=2;b++)

printf("%d",*a[b]);
相似回答