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