C では、次のように定義された構造体の配列があります。
struct D
{
char *a;
char *b;
char *c;
};
static struct D a[] = {
{
"1a",
"1b",
"1c"
},
{
"2a",
"2b",
"2c"
}
};
配列の要素数を判定したいのですが、sizeof(a)
2ではなく48という間違った結果が返ってきます。何か間違っているのでしょうか、それともsizeof
単にここでは信頼できないのでしょうか? 問題になるのであれば、私は次のようにコンパイルしています。湾岸協力会議4.4.
ベストアンサー1
sizeof a / sizeof a[0];
これはコンパイル時の定数なので、たとえば別の配列を作成するために使用できます。
#define N sizeof a / sizeof a[0]
int n_a[N];