一个关于动态二维数组空间的分配问题,大家请帮忙!!!
#include <stdio.h>#include <malloc.h>
int main(void)
{
int n, k, i, j, avg, sum=0, **a;
while (scanf("%d %d", &n, &k)!=EOF)
{
a = (int **)malloc(sizeof(int)*n*k);
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
//sum+=a[i][j];
printf("%d ", a[i][j]);
}
//printf("sum=%d ", sum);
}
//sum=0;
free(a);
}
system("pause");
return 0;
}
程序如上。
我在dos下执行gcc -o test.exe test.c,然后运行这个可执行文件,为什么在完成输入以后,程序没有输出??而且退出了呢??
谢谢了先!!!!!!!!!!!
----------------解决方案--------------------------------------------------------
汗。。。。。。。。。。。。。。
二维指针不是这样用的。。。。。
[color=white]
----------------解决方案--------------------------------------------------------
那请指点迷津哦
----------------解决方案--------------------------------------------------------
/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int n, k, i, j, avg, sum=0, *a;
while (scanf("%d %d", &n, &k)!=EOF)
{
a = (int*)malloc(sizeof(int)*n*k);
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
scanf("%d", &a[i*k+j]);
}
}
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
//sum+=a[i][j];
printf("%d ", a[i*k+j]);
}
//printf("sum=%d ", sum);
}
free(a);
}
system("pause");
return 0;
}
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int n, k, i, j, avg, sum=0, *a;
while (scanf("%d %d", &n, &k)!=EOF)
{
a = (int*)malloc(sizeof(int)*n*k);
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
scanf("%d", &a[i*k+j]);
}
}
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
//sum+=a[i][j];
printf("%d ", a[i*k+j]);
}
//printf("sum=%d ", sum);
}
free(a);
}
system("pause");
return 0;
}
[color=white]
[[it] 本帖最后由 雨中秣燕 于 2008-5-5 14:18 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int n, k, i, j, avg, sum=0, **a;
while (scanf("%d %d", &n, &k)!=EOF)
{
a = (int **)malloc(sizeof(int*)*n);
for (i=0; i<n; i++)
{
a[i]=(int *)malloc(sizeof(int)*k);
for (j=0; j<k; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i=0; i<n; i++)
{
for (j=0; j<k; j++)
{
//sum+=a[i][j];
printf("%d ", a[i][j]);
}
//printf("sum=%d ", sum);
}
//sum=0;
free(a);
}
// system("pause");
return 0;
}free(a);
[[it] 本帖最后由 sunkaidong 于 2008-5-5 14:30 编辑 [/it]]
----------------解决方案--------------------------------------------------------
谢谢2位高手了,我看看..
----------------解决方案--------------------------------------------------------
5楼的代码有误
[color=white]
----------------解决方案--------------------------------------------------------
但是我运行你们两个人的代码都可以阿...
----------------解决方案--------------------------------------------------------
燕子说什么地方sizeof(int *)?没觉得啊
----------------解决方案--------------------------------------------------------
请问你malloc调用了多少次,free又调用了多少次?
[color=white]
----------------解决方案--------------------------------------------------------