#include typedef struct{ /* 孫構造体 */ int a; int b; /* 特に使いません */ } mago_t; typedef struct{ /* 子供構造体 */ mago_t mago1; mago_t mago2; } kodomo_t; typedef struct{ /* 全体定義 */ int hIndex; /* 特に使いません */ kodomo_t kodomo[10]; } data_t; /* グローバル変数 */ data_t g_data; /* 任意の位置のポインタを取得する関数 */ void retData( void** data, int posi ) { *data = (void*)&g_data.kodomo[posi]; } /* メイン関数 */ main() { void* p_void; kodomo_t* kodomo; /* 初期化 */ g_data.kodomo[1].mago1.a = 5; g_data.kodomo[2].mago1.a = 6; retData( &p_void, 1 ); kodomo = (kodomo_t*)p_void; printf( "index=1, a=%d\n", kodomo->mago1.a ); retData( &p_void, 2 ); kodomo = (kodomo_t*)p_void; printf( "index=2, a=%d\n", kodomo->mago1.a ); /* おしまい (^m^) */ return 1; }