尝试了用结构体为四维数组申请动态内存空间,希望对大家有用。代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct _a{
float *dat;
}A;
int main()
{
int i,j,k,l;
int n1=4;
int n2=4;
int n3=4;
int n4=4;
A *a = malloc(sizeof(A)*n1*n2*n3 );
/* Allocate memory space */
for(i=0;i<n1;++i)
{
for(j=0;j<n2;++j)
{
for(k=0;k<n3;++k)
{
a[i*n2*n3+j*n3+k].dat = malloc(sizeof(float)*n4 );
}
}
}
/*Array assignment */
for(i=0;i<n1;++i)
{
for(j=0;j<n2;++j)
{
for(k=0;k<n3;++k)
{
for(l=0;l<n4;++l)
{
a[i*n2*n3+j*n3+k].dat[l] = i*n2*n3*n4+j*n3*n4+k*n4+l;
printf("a[%d][%d][%d][%d] = %f\n",i,j,k,l, a[i*n2*n3+j*n3+k].dat[l]);
}
}
}
}
/* Delet memory space */
for(i=0;i<n1;++i)
{
for(j=0;j<n2;++j)
{
for(k=0;k<n3;++k)
{
free(a[i*n2*n3+j*n3+k].dat);
}
}
}
free(a);
printf("End!\n");
return 0;
}
亲测有效~~