C - int-Array innerhalb der Struktur deklarieren

9

In C habe ich die unten gezeigte Struktur definiert und möchte sie inline initialisieren. (Weder die Felder in der Struktur noch das Array foos ändern sich nach der Initialisierung). Der Code im ersten Block funktioniert einwandfrei.

%Vor%

Allerdings brauche ich das tmp-Feld nicht wirklich. In der Tat, es wird nur meinen Code überfluten (dieses Beispiel ist etwas vereinfacht). Stattdessen möchte ich die Werte von some-array in der Deklaration für foos deklarieren. Ich kann jedoch nicht die richtige Syntax bekommen. Vielleicht sollte das Feld einige-Array anders definiert werden?

%Vor%     
Bob 22.06.2013, 12:00
quelle

3 Antworten

13
%Vor%

Hier ist some_array eigentlich ein Zeiger, kein Array. Sie können es wie folgt definieren:

%Vor%

Noch eine Sache, der ganze Punkt von typedef struct Foo Foo; besteht darin, Foo anstelle von struct Foo zu verwenden. Und Sie können typedef wie folgt verwenden:

%Vor%     
Yu Hao 22.06.2013, 12:06
quelle
20

Zuerst gibt es zwei Möglichkeiten:

  • Sie kennen die Größe dieses Arrays
  • Sie kennen diese Größe nicht.

Im ersten Fall handelt es sich um ein statisches Programmierproblem, und es ist nicht kompliziert:

%Vor%

Sie können diese Syntax verwenden, um das Array zu füllen:

%Vor%

Wenn Sie die Größe des Arrays nicht kennen, handelt es sich um ein Problem mit der dynamischen Programmierung. Sie müssen die Größe fragen.

%Vor%

Zweitens ist typedef nützlich, also wenn du das schreibst:

%Vor%

bedeutet, dass Sie die Wörter "struct Foo" durch "Foo" ersetzen. Also ist die Syntax das:

%Vor%

Prost.

    
Bertie92 26.01.2014 13:26
quelle
1

Meine Antwort ist für den folgenden Codeabschnitt: -

%Vor%

Alle oben genannten Probleme bei der Kompilierung sind darauf zurückzuführen, dass sie nicht mit den ANSI-Standards kompatibel sind. Die aggregierten "Foos" haben Unteraggregate, von denen einige geklammert sind, während andere nicht. Also, wenn Sie die internen Klammern entfernen nach repräsentieren das Array 'tmp' würde es ohne Fehler kompilieren. Für zB.

%Vor%     
smitha 01.06.2016 08:43
quelle

Tags und Links