C/C++中为二维数组分配内存

来源:互联网 发布:青岛网络干部学院主页 编辑:程序博客网 时间:2024/06/12 19:31

今天参加笔试,其中有两题是分配内存的,第一题是动态分配一个一维数组,第二个题是动态分配一个二维数组.第一题和第二题我分别是这样写的:

/*第一题*/

p=(float*)malloc(sizeof(float[M]));

/*第二题*/

p=(float*)malloc(sizeof(int[M][N]));

结果说我第二题错了,我还不明白错哪了,我又问写成M*N对不,结果还是说不对.刚查了一下,二维数组应该分别第一维和第二维分配空间,而我一次就分配了,所以错在这里了,正确的应该这样:

 

int i;

int **p;

p=(int*)malloc(sizeof(int)*M);/*给行分配空间*/

for(i=0;i<M;i++)

{

     p[i]=(int*)malloc(sizeof(int)*N);/*给列分配空间*/

}

 

整体意思就是分配M行,每行有N个单元,即第一维都是指向N个单元的指针.

 

参考:http://www.docin.com/p-2706237.html

原创粉丝点击