Código:
//////////////////////////////////////////////////////////////////
//
// UTN FRGP
// 2012
// david_BS
// EMAIL: david_bs@live.com
//
//////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>
struct somestruct{
int index;
};
#define MAX 8
typedef float tMatrix[MAX][3][4];
float**** Inicializar( void ){
static float mmf[8][3][4];// para que no cambie de dirección
// inicializamos el objeto tridimensional
for(int i=0; i<8; i++)
for(int j=0; j<3; j++){
for(int k=0; k<4; k++){
switch(i){
case 0: {
switch(j){
case 0: {
switch(k){
case 0: {mmf[i][j][k]=0.02f;break;}
case 1: {mmf[i][j][k]=0.022f;break;}
case 2: {mmf[i][j][k]=0.0222f;break;}
case 3: {mmf[i][j][k]=0.02222f;break;}
}
break;
}
case 1: {mmf[i][j][k]=0.03f;break;}
case 2: {mmf[i][j][k]=0.04f;break;}
}
break;
}
case 1: {mmf[i][j][k]=0.05f;break;}
case 2: {mmf[i][j][k]=0.7f;break;}
case 3: {mmf[i][j][k]=99;break;}
case 4: {mmf[i][j][k]=0.11f;break;}
case 5: {mmf[i][j][k]=88;break;}
case 6: {mmf[i][j][k]=33;break;}
case 7: {mmf[i][j][k]=100;break;}
}
}
}
return (float****)&mmf;// retornamos la dirección del objeto
}
void Mostrar (float m[3][4]){
for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
printf("%f\n",m[i][j]);
}
int main(){
// pB va a ser un puntero a un objeto de 3 dimensiones
tMatrix *pB = ( tMatrix* )Inicializar( );
struct somestruct vS[8];
vS[0].index=0;
vS[1].index=1;
vS[2].index=2;
vS[3].index=3;
vS[4].index=4;
vS[5].index=5;
vS[6].index=6;
vS[7].index=7;
struct somestruct* pS;
pS=vS;
Mostrar((*pB)[pS[0].index]);// dentro de pB hay una matriz de 3x4
system("pause");
return 0;
}
Proyecto MSVC++ 6.0