2017-06-08 2 views
0

Ich bin auf ein Array mit nur einem Element gestoßen. Dieses Array ist innerhalb einer Struktur definiert. Welche geht so:Bedeutung von Array mit nur einem Element

typedef struct abc 
{ 
    int variable1; 
    char variable2; 
    float array[1]; 
}; 

Ich verstehe nicht, warum diese Anordnung erforderlich ist, warum können wir nicht nur eine Variable definieren oder einen Zeiger (unter Berücksichtigung der Array-Eigenschaft) definieren.

Ich möchte es verwenden. Wie verwende ich diese Variable? abc.array[0] scheint korrekt zu sein. Ist es nicht.

Zusatz Ich verwende keine dynamische Speicherzuweisung, was ist dann ihre Bedeutung?

+6

Mögliche Duplikat [Ein Element Array in struct] (https://stackoverflow.com/questions/4559558/one-element-array-in-struct) –

+0

In C99 besser verwenden [flexibles Array-Mitglied] (https://en.wikipedia.org/wiki/Flexible_array_member). In älteren Standards von C wurde oft ein Array der Dimension Eins verwendet. –

+0

@GovindParmar danke. Können Sie mir bitte sagen, wie ich es benutzen kann? Ich mache keine dynamische Speicherzuordnung –

Antwort

2

Es ist wahrscheinlich, was der "struct hack" genannt wird. Durch Zuweisung eines großen Speicherblocks wird das Array dynamisch. Das eine Element ist nur ein Platzhalter, um es kompilieren zu lassen, tatsächlich wird es viele Floats geben.

Das dynamische Array muss das letzte Element sein.

Verwendung wie folgt aus:

struct abc *ptr = malloc(sizeof(struct abc) + (N-1) * sizeof(float)); 
ptr->variable1 = N; /* usually store length somewhere in struct*/ 
+0

Dies ist ein Beispiel, wenn ich wünschte, wir könnten Lieblingsantworten. – Panzercrisis

Verwandte Themen