本文介绍了多维数组分配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用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...
这篇关于多维数组分配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!