Forum: Mikrocontroller und Digitale Elektronik Ganzes struct mit 0 initialisieren


von Hans (Gast)


Lesenswert?

Hallo!

Kann ich ein struct auch komplett mit 0 für alle Werte initialisieren 
oder muss ich das mit = { 0, 0, ...} für jedes einzeln machen?

reicht   struct = 0   ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das geht mit memset.
1
struct 
2
{
3
  int x;
4
  char y[45];
5
  float z;
6
} bla;
7
8
memset(&bla, 0, sizeof (bla));

von Hans (Gast)


Lesenswert?

Supr, danke!

von Klaus W. (mfgkw)


Lesenswert?

Zum Initialisieren (nicht später zum Nullsetzen, nur bei der Definition 
gleich) reicht auch:
1
   ... = { 0 };
Es müssen also nicht alle Werte aufgeführt werden, alle nicht erwähnten 
werden mit zu 0 gesetzt.

von Jay (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Zum Initialisieren (nicht später zum Nullsetzen, nur bei der Definition
> gleich) reicht auch:   ... = { 0 };
> Es müssen also nicht alle Werte aufgeführt werden, alle nicht erwähnten
> werden mit zu 0 gesetzt.

häng aber auch gleich noch ein Komma an die Null, sonst meckert der 
Compiler wieder.

... = { 0, };

Grüße
Jay

von Klaus W. (mfgkw)


Lesenswert?

Was soll das helfen?
Mit -Wextra warnt der gcc vor einer fehlenden Initialisierung, egal ob 
mit Komma oder nicht.
Der Compiler aus  VS2008 sagt da sowieso nix.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.