Ein Elementarray in struct

8

Warum eine Struktur ein einzelnes Element-Array verwendet, wie folgt:

%Vor%

Um es für die spätere dynamische Zuweisung bequem zu machen?

    
Oxdeadbeef 30.12.2010, 02:28
quelle

2 Antworten

15

Mit einem Wort, ja.

Grundsätzlich ist die C99-Methode, dies zu tun, mit einem flexiblen Array-Mitglied :

%Vor%

Einige Pre-C99-Compiler lassen Sie durch:

%Vor%

Aber um zu garantieren, dass es über alle Compiler hinweg funktioniert, ist:

%Vor%

Und dann, egal wie es erklärt wird, können Sie das Objekt mit:

zuweisen %Vor%

Obwohl für die besten Ergebnisse sollten Sie size_t anstelle von int verwenden.

    
Chris Lutz 30.12.2010, 02:34
quelle
6

Dies ermöglicht normalerweise den idiomatischen Zugriff auf Strukturinstanzen variabler Größe. Wenn Sie Ihr Beispiel betrachten, haben Sie zur Laufzeit möglicherweise ein Bitmapset, das wie folgt im Speicher abgelegt ist:

%Vor%

Sie enden also mit einer Laufzeitvariablennummer von uint32, die am Ende Ihrer Struktur hängt, aber zugänglich ist, als wären sie inline in der Struktur definiert. Dies ist im Grunde genommen (ab) die Tatsache zu benutzen, dass C keine Array-Grenzen-Laufzeitprüfung durchführt, um Code wie folgt zu schreiben:

%Vor%     
Will Robinson 30.12.2010 02:38
quelle

Tags und Links