C語言為四維陣列申請動態記憶體空間的方法(一)
阿新 • • 發佈:2019-02-13
嘗試了用結構體為四維陣列申請動態記憶體空間,希望對大家有用。程式碼如下:
#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;
}
親測有效~~