1. 程式人生 > >C語言為四維陣列申請動態記憶體空間的方法(一)

C語言為四維陣列申請動態記憶體空間的方法(一)

嘗試了用結構體為四維陣列申請動態記憶體空間,希望對大家有用。程式碼如下:

#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; }

親測有效~~