forループにあるc2+yi,c3+(yi+j)*zの計算をforループの外で先に計算しておいてその結果をループ内のc1[i],c1[i][j]に代入したいのですがどのようにすればいいのかわかりません。
よろしくお願いします。
typedef unsigned char UCHAR; #define x 500 #define y 1500 #define z 5 UCHAR ***malloc3Duchar(int x,int y,int z) { int i,j; UCHAR ***c1,**c2,*c3; if((c1 = (UCHAR ***)malloc(x*sizeof(UCHAR **))) == NULL) error1("can't allocate in malloc3Duchar"); if((c2 = (UCHAR **)malloc(x*y*sizeof(UCHAR *))) == NULL) error1("can't allocate in malloc3Duchar"); for(i=0;i<x;i++) c1[i]=c2+y*i; if((c3 = (UCHAR *)malloc(x*y*z*sizeof(UCHAR))) == NULL) error1("can't allocate in malloc3Duchar"); for(i=0;i<x;i++) for(j=0;j<y;j++) c1[i][j]=c3+(y*i+j)*z; return c1; }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。