Maxx: Strukturen

Beitrag lesen

Hallo,

weil ich (noch) nicht weis wie man da auf die Datensätze zugreifen kann, da ich die structs mit verschiedenen Funktionen nutze...

Objekte in Strukturen zu packen ist eine gute Idee, so ist es wesnetlich einfacher den Überblick zu behalten. Und du sparst dir irgendwelchen Speichergrößenberechnungen.

Globale Variablen die kreuz und quer im Programm verändert werden sind hingegen nicht so gut. Bei kleineren Programmen mag das ja noch angehen, aber du verlierst sehr schnell den Überblick welche Funktion wo etwas geändert hat.

Guck dir das nachfolgende Beispiel an, es sollte den Vorteil der Datenhaltung in einer Struktur deutlich zeigen. Und du hast keine globalen Variablen sondern übergibst nur einen Zeiger auf die Struktur.

HTH

Jochen (der C liebt und sich gerade mit so neumodischem C# Mist rumärgert)

  
typedef struct  
{  
  int  test;  
  char name[20];  
}Datensatz;  
  
int Machwas(Datensatz *zeiger);  
  
int main(int argc, char* argv[])  
{  
  Datensatz *ptr;  
  Datensatz *p;  
  
  // Anzahl bestimmen  
  int Anzahl=13;  
  int i;  
  
  // Speicherplatz für Datensatz * Anzahl  
  ptr = (Datensatz*)malloc(sizeof(Datensatz)*Anzahl);  
  p=ptr;                    // Zeiger auf den Beginn für später merken  
  
  ptr->test=10;             // ptr zeigt auf ersten Datensatz  
  ptr[1].test=20;           // ptr[1] das zweite Element  
  ptr += 2;                 // Zeigerarithmetik  
  ptr->test=30;             // zeigt jetzt auf den dritten Datensatz  
  
  Machwas(++ptr);  
  
  for(i=0; i<4; i++)        // Kontrollausgabe  
    printf("%i  ",p[i].test);  
  
 free(p);  
 return 0;  
}  
  
int Machwas(Datensatz *zeiger)  
{  
  zeiger->test=40;  
  return true;  
}  

--
Kritzeln statt texten: Scribbleboard