Forum: Compiler & IDEs Struktur initialisieren


von Nixwisser (Gast)


Lesenswert?

Hallo,

gibt es eine Möglichkeit, eine Struktur komplett zu "nullen"? 
Theoretisch brauche ich nicht mal den Wert "0" in den Strukturmembern, 
sondern die Struktur soll keine Wirkung haben, ähnlich wie ein 
NULL-Pointer.

von Oliver (Gast)


Lesenswert?

Wo und wie soll die Struktur denn "nicht wirken"?

Oliver

von Nixwisser (Gast)


Lesenswert?

Die Struktur wird in einem Funktionsaufruf übergeben void foo (struct 
bar strX). Am besten wäre es, wenn sie auf dem Stack gar nicht angelegt 
würde. Jedenfalls ist ihr Inhalt nicht relevant.

von Karl H. (kbuchegg)


Lesenswert?

memset könnte eine Lösung für dich sein
1
struct xyz
2
{
3
  int a;
4
  char b;
5
};
6
7
void foo()
8
{
9
  struct xyz myVar;
10
11
  memset( &myVar, 0, sizeof( myVar ) );
12
  ...
13
}

von Karl H. (kbuchegg)


Lesenswert?

Nixwisser wrote:
> Die Struktur wird in einem Funktionsaufruf übergeben void foo (struct
> bar strX). Am besten wäre es, wenn sie auf dem Stack gar nicht angelegt
> würde.

Wenn du eine Variable nicht haben willst, dann gibt es nur
1 Möglichkeit: Leg sie nicht an.

> Jedenfalls ist ihr Inhalt nicht relevant.

Dann kann es dir doch Wurscht sein, was in der Struktur enthalten
ist.

von Steffen (Gast)


Lesenswert?

Kannst du den Zweck dieser Übung mal näher erläutern? Nur so aus 
Interesse.
Steffen

von Oliver (Gast)


Lesenswert?

Der Sinn erschliesst sich mir auch nicht, aber egal.

Warum übergibst du der Funktion nicht einen Pointer auf die Struktur? Da 
kannst du dann auch einen Null-Pointer übergeben, falls erforderlich.

Wenn du eine lokale Kopie benötigst, musst du die halt, wenn dann doch 
gewünscht, von Hand anlegen.

Oliver

von Nixwisser (Gast)


Lesenswert?

Hat sich erledigt. Trotzdem danke für eure Hilfe.

Der Sinn dahinter:

Ich muss eine Interface-Funktion aufrufen, in deren Deklaration im 
Kommentar zu lesen ist, dass falls man keine Daten für die besagte 
Struktur übergeben möchte, man diese Null setzen soll. Gemeint war 
allerdings, einen Pointer null zu setzen, der Strukturmember ist. 
Dadurch werden alle anderen Membervariablen ignoriert.

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.