構造体の纏めの後について……。
以前、『構造体の纏め方』と言うタイトルで質問した者です。
早速本題に。
// --------------- 構造体・鋳型宣言 ---------------
typedef struct tagABC {
int Dog;
int Cat;
} ABC;
// -----------------------------------------------
// --------------- 構造体実体宣言 -----------------
ABC Point1[ 20 ][ 20 ] =
{
{
{ 10 , 11 },
{ 20 , 21 },
{ 30 , 31 }
},{
{ 100 , 101 },
{ 200 , 201 }
}
},
Point2[ 20 ][ 20 ] =
{
{
{ 1000 , 1001 },
{ 2000 , 2001 }
}
},
/************************************************/
/* 『ココが難題!!』 */
/************************************************/
*DBase[] = { Point1[ 0 ] , Point2[ 0 ] };
// -----------------------------------------------
さて、呼び出し側のソースコードは、
Point1[ 1 ][ 0 ]
とすれば、
{ 100 , 101 }
を返してくれます。
*以後、この値が欲しいとして話を進めます
しかし、
( DBase + 0 )[ 1 ][ 0 ]
と呼び出した場合、突然予定通りの値を返してくれません。
(コンパイルとビルドは通る)
デバッガでメモリ上を見てみると、期待している値(上記)を呼び出す為には、
( DBase + 0 )[ 0 ][ 20 ]
となっており、普通ならばアクセス出来ない場所を指定しなければならなく、とても不思議な現象が起こっています。
因みに、
( DBase + 0 )[ 1 ][ 0 ]
と指定すると、結果的には、
Point2[ 0 ][ 0 ]
を参照しているのと同じ現象が起こります。
この現象をどうにかして二次元配列で期待した値を呼び出せる方法を御教授御願いします。
使用コンパイラ:BCC 5.5.1
お礼
なるほどです。 ありがとうございました。