C99 のフレキシブル配列メンバ

複数のメンバを持つ struct では、struct の最後のメンバは、不完全な配列型にすることができます。そのようなメンバは、structフレキシブル配列メンバと呼ばれます。

Note

struct にフレキシブル配列メンバが含まれる場合、struct 全体が不完全な型になります。

フレキシブル配列メンバを使用すると、配列サイズの指定をランタイムまで保留することができるという意味で C の動的型指定を模倣することがきます。以下に例を示します。

extern const int n;
typedef struct
{
    int len;
    char p[];
} str;
void foo(void)
{
    size_t str_size = sizeof(str);  // offsetoff(str, p) と等価
    str *s = malloc(str_size + (sizeof(char) * n));
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711