一个关于二维数组动态分配空间的问题!!!!!!!!!!!!!!!!!!!!!!!!
#include<stdio.h>#include<stdlib.h>
int main()
{
int i,j,n;
int **p;
p=(int **)malloc(sizeof(int)*20);
if(p==NULL)
{
printf("fail!\n");
return;
}
//分配p[n]的地址 也就是行数
for(n=0;n<4;n++)
{
*(p+n)=(int *)malloc(sizeof(int)*n*5); //*5是因为一行有5个元素
}
for(n=0;n<4;n++)
{
if(p[n]==NULL)
{
printf("fail!\n");
return;
}
}
//初始化一个4行5列的数组
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
*(*(p+i)+j)=i+j;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
printf("%d\t",p[i][j]);
}
printf("\n");
}
return 0;
}
运行GCC 编译出的结果是 0 1 2 3 1
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
为啥 p[0][4] 不是我想的4 而是1 求大神指教!!!!!!!!