C语言中怎样定义一个未知行数和列数的二维数组?
答案:7 悬赏:80 手机版
解决时间 2021-04-08 01:06
- 提问者网友:未信
- 2021-04-07 01:30
C语言中怎样定义一个未知行数和列数的二维数组?
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-04-07 02:22
1、使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小。
2、例程,分配3行4列二维数组:
#include
#include
int main()
{
int **a;
int i, j;
a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for (i = 0; i < 3; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*4);
}
//初始化
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
a[i][j] = i+j;
}
}
//输出测试
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
printf ("%d ", a[i][j]);
}
printf ("
");
}
//释放动态开辟的空间
for (i = 0; i < 3; ++i){
free(a[i]);
}
free(a);
return 0;
}
2、例程,分配3行4列二维数组:
#include
#include
int main()
{
int **a;
int i, j;
a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
for (i = 0; i < 3; ++i){//为每列分配4个大小空间
a[i] = (int*)malloc(sizeof(int)*4);
}
//初始化
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
a[i][j] = i+j;
}
}
//输出测试
for (i = 0; i < 3; ++i){
for (j = 0; j < 4; ++j){
printf ("%d ", a[i][j]);
}
printf ("
");
}
//释放动态开辟的空间
for (i = 0; i < 3; ++i){
free(a[i]);
}
free(a);
return 0;
}
全部回答
- 1楼网友:胯下狙击手
- 2021-04-07 09:04
二维数组的第二维是一定要确定的,因为它们是按行存放的
- 2楼网友:过活
- 2021-04-07 07:41
c语言在定义2围数组的时候``
你的 a[n][m]是行不通的
因为他在定义的时候至少要知道第2围的长度``
a[n][100];应该就不会出错了
你的 a[n][m]是行不通的
因为他在定义的时候至少要知道第2围的长度``
a[n][100];应该就不会出错了
- 3楼网友:患得患失的劫
- 2021-04-07 06:46
[ i ][ j ]
用变量定义呗~~~
用变量定义呗~~~
- 4楼网友:鱼忧
- 2021-04-07 05:34
C语言是不能定义这样的数组的。一定需要的话可以使用表,在新增项的时候分配存储空间
- 5楼网友:舊物识亽
- 2021-04-07 04:23
c语言的数组定义时,必须确定行数和列数,因为在c语言中数组不允许动态定义。
- 6楼网友:野味小生
- 2021-04-07 03:53
a[n][100]太占内存,用指针*(*(a+n)+m)
而且scanf后面要有判断
if(!(2<=n<=100&&2<=m<=100))
printf("error");
而且scanf后面要有判断
if(!(2<=n<=100&&2<=m<=100))
printf("error");
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯