当前位置: 代码迷 >> C语言 >> 一个关于动态二维数组空间的分配问题,大家请帮忙!!!
  详细解决方案

一个关于动态二维数组空间的分配问题,大家请帮忙!!!

热度:167   发布时间:2008-05-05 14:07:01.0
一个关于动态二维数组空间的分配问题,大家请帮忙!!!
#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;
}


[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]
----------------解决方案--------------------------------------------------------
  相关解决方案