|
// 例:
#include<stdlib.h>
#include<stdio.h>
double*** fMalloc3D( int x, int y, int z );
void fFree3D( double*** q, int x, int y );
int main( void )
{
int i,j,k,x,y,z;
double*** q;
/*配列の形を宣言をする。*/
x=2;
y=3;
z=4;
/*3次元配列*/
q = fMalloc3D( x, y, z );
/*配列に数値代入*/
for(i=0;i<x;i++){
for(j=0;j<y;j++){
for(k=0;k<z;k++){
printf("数値を代入してください。q[%d][%d][%d]=",i,j,k);
scanf("%d",&q[i][j][k]);
}
}
}
/*結果表示*/
for(i=0;i<x;i++){
for(j=0;j<y;j++){
for(k=0;k<z;k++){
printf("数値はq[%d][%d][%d]=%d\n",i,j,k,q[i][j][k]);
}
}
}
/*メモリを解放*/
fFree3D( q, x, y );
return 0;
}
double*** fMalloc3D( int x, int y, int z )
{
int i, j;
double*** q = (double***)malloc( sizeof(double**) * x );
for( i = 0; i < x; i++ ){
q[i] = (double**)malloc( sizeof(double*) * y );
for( j = 0; j < y; j++ ){
q[i][j] = (double*)malloc( sizeof(double) * z );
}
}
return q;
}
void fFree3D( double*** q, int x, int y )
{
int i, j;
for( i = 0; i < x; i++ ){
for( j = 0; j < y; j++ ){
free( q[i][j] );
}
free( q[i] );
}
free( q );
}
|