这里为什么a[0]是二维a[0][0]是一维?

这里为什么a[0]是二维a[0][0]是一维?请给个详细的解释,新手刚学图片

a是一个三维的 a[0]肯定就是三维中的第一个数组 所以是二维的 ,a[0][0]同上

a【】是一维数组,a[][]二维数组

a[1][2][3]={{{1},{2},{3}},{{4},{5},{6}}}

inline unsigned char *** qx_allocu_3(int n,int r,int c,int padding=QX_DEF_PADDING)
{
unsigned char a,*p,***pp;
int rc=r*c;
int i,j;
a=(unsigned char*) malloc(sizeof(unsigned char )*(n*rc+padding));
if(a==NULL) {printf("qx_allocu_3() fail, Memory is too huge, fail.\n"); getchar(); exit(0); }
p=(unsigned char**) malloc(sizeof(unsigned char*)*n*r);
pp=(unsigned char***) malloc(sizeof(unsigned char**)*n);
for(i=0;i<n;i++)
for(j=0;j<r;j++)
p[i*r+j]=&a[i*rc+j*c];
for(i=0;i<n;i++)
pp[i]=&p[i*r];
return(pp);
}
给变量分配内存的过程如上面函数所示,上面是分配三维变量

二维数组是由一维数组构成的,如图所示:图片说明

我还是建议你去看看C++的指针,于是你就懂了