c言語初心者です。
構造体のサイズをsizeof関数を使用して
取得する方法について質問があります。
#include <stdio.h>
typedef struct sAst{
char A1;
char A2;
}sAst;
typedef struct sBst{
char a;
int b;
sAst* pAst;
}sBst;
int main()
{
sAst* pTest;
// sAst TestAst;
sAst Ast1[] = {{1, 25},
{2, 26},
{3, 27}};
sAst Ast2[] = {{11, 12},
{13, 14},
{15, 16},
{17, 18},
{19, 20}};
sAst Ast3[] = {{1, 25},
{3, 27}};
sBst Bst1[] = {{'M', 19, Ast1},
{'F', 25, Ast2},
{'S', 27, Ast3}};
printf("Ast1=%d\n", sizeof(Ast1));
printf("Ast2=%d\n", sizeof(Ast2));
printf("Ast3=%d\n", sizeof(Ast3));
return 0;
}
Ast1、Ast2、Ast3の構造体のデータサイズを取得するために
sizeof(Ast1)
sizeof(Ast2)
sizeof(Ast3)
のような方法で、サイズを取得ことは可能であると思うのですが、
構造体Bst1を使用して、
Ast1、Ast2、Ast3の構造体のデータサイズを取得することは不可能でしょうか。
もしもご存知あればご教授願えないでしょうか。
P.S.
例えば、sAst構造体が多数あって、
そのsAstのポインタがBst1に登録されているような場合に、構造体Bst1を使用して、
各sAstのデータを登録された段数だけ取得するような処理を実現するような場合に
各sAstのデータを登録された段数を知るが必要であると思っています。
( 例えば、Ast1(段数3)、Ast2(段数5)、Ast3(段数2)。 )
不可能な場合は、
各sAst構造体の最終段に、
構造体のターミネートを指し示すような情報を追加するの対策方法等を行うことが必要なように思っています。