長さ 0 の配列
C では、長さ 0 の配列を含む構造体を定義できます。これは C-Hack と呼ばれ、特定の状況で役立ちます。
ケーススタディ
最近のコード リファクタリングにより、長さ 0 の配列を持ついくつかの構造体が明らかになりました。例:
struct someData { int nData; BYTE byData[0]; }
なぜ長さがゼロなのかArrays?
通常、コンパイラは長さ 0 の配列に対して警告を生成しますが、この場合、警告は抑制されました。長さ 0 の配列を使用する理由の 1 つは、実行時に任意の長さの配列を作成できるようにするためです。
長さ 0 の配列を使用した構造体の作成
作成の試行「new」演算子を使用して長さ 0 の配列を持つ新しい構造体を作成すると、エラーが発生します。代わりに、次の手法を使用できます。
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
この関数は、someData 型のオブジェクトとその指定されたサイズの byData 配列にメモリを割り当てます。
代替アプローチ
多くの場合、より適切なアプローチは、長さ 0 の代わりに長さ 1 のポインターまたは配列を使用することです。 配列。これにより、カスタム メモリ割り当ての必要性がなくなり、コードが読みやすく保守しやすくなります。
結論
長さゼロの配列は、特定の状況では便利なテクニックとなる可能性があります。ただし、使用には注意が必要です。ほとんどの場合、ポインターや長さ 1 の配列などの代替アプローチの方が適切であり、コードの理解と保守がより簡単になります。
以上がC 構造体で長さ 0 の配列を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。