多维数组分配 [英] Multi-dimensional Array Allocation

查看:175
本文介绍了多维数组分配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用C几乎是一个初学者,我想分配一个2维数组,改变它,重新分配它,并打印出来。
既与code的答案是useful.Now的code是:

 的main()
    {
     INT I,J,L,** LP;
      scanf函数(%i的,&安培; L);
      LP =释放calloc(L,sizeof的(* LP));
      对于(i = 0; I< L,我++)
      LP [I] =释放calloc(L,的sizeof(*(LP [I])));      对于(i = 0; I< L,我++)
      {
          为(J = 0; J&下:L; J ++)
          {
           LP [I] [J] = 0;
           的printf(%I \\ T,LP [I] [J]);
          }
       的printf(\\ n);
      }
       免费(LP);
       返回(0);
     }


解决方案

在这里很多错误,但是对于你应该做这样的分配:

  INT的main()
{
INT I = 0;
INT J = 0;
INT L = 0;
INT ** LP = NULL;scanf函数(%i的,&安培; L);
如果(!(LP =释放calloc(L,sizeof的(* LP))))//分配1维
    返回(0);
对于(i = 0; I< L,我++)
{
    LP [I] =释放calloc(L,的sizeof(*(LP [I]))); //所有的第二维度
}
返回(0);

}

和不投malloc的回报...

I am almost a beginner in C and I want to allocate a 2 dimensional array, change it, reallocate it and print it. Both of the answers with the code were useful.Now the code is:

    main()
    {
     int i, j, L , **lp ;
      scanf("%i" , &L );
      lp = calloc(L , sizeof(*lp) );
      for(i=0 ; i<L ; i++)
      lp[i] = calloc( L , sizeof( *(lp[i])) );

      for(i=0 ; i<L ; i++)
      {
          for(j=0 ; j<L ; j++ )
          {
           lp[i][j]=0;
           printf("%i\t" , lp[i][j] );
          }
       printf("\n");
      }
       free( lp );
       return(0);
     }

解决方案

Many errors here, but as for the allocation you should do like this :

int main()
{
int i = 0;
int j = 0;
int L = 0;
int **lp = NULL;

scanf("%i", &L);
if (!(lp = calloc(L, sizeof(*lp)))) //allocate 1st dimension
    return (0);
for (i = 0; i < L; i++)
{
    lp[i] = calloc(L, sizeof(*(lp[i]))); //all 2nd dimensions
}
return (0);

}

And don't cast the return of malloc...

这篇关于多维数组分配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆