> als oop mensch bitte ich euch um hilfe
Was für ein OOP-Mensch bist du, bzw. welche OOP-Sprache kannst du? Deine
Fragen werden vielleicht etwas klarer, wenn du schreibst, wie du dein
Problem in Smalltalk, Java, C++ o.w.a.i. programmieren würdest. Dann
kann dir sicher jemand sagen, wie man entsprechendes in C löst.
> ich benutze structs, welche wiederum structs als parameter (seht ihr,
> da isses schon wieder) besitzen, ...
Meinst du mit "parameter" Elemente (members)? Wahrscheinlich.
> ... die in ihrer grösse dynamisch sind.
Strukturen haben normalerweise eine feste Größe. Ausnahme: Das letzte
Element einer Struktur mit mehreren Elementen darf ein Array mit
unspezifizierter Größe sein (bspw. int array[];). Solche Strukturen
werden meist dynamisach mit malloc alloziert, da man nur damit die
Möglichkeit hat, dem Array eine von Null verschiedene Größe zu geben.
Jedes Element einer Struktur kann ein Zeiger sein. Der Zeiger hat zwar
konstante Größe, aber das, worauf er zeigt, kann das erste Element eines
Arrays oder einer Struktur mit dynamischer Größe sein.
Jedes Array kann seinerseits einfache (int, double, ...) oder
zusammengesetzte Datentypen (Strukturen, Unions oder Arrays) als
Elemente enthalten.
> ist die alloziierung richtig?
Welche meinst du?
> zwar besitzt jedes struct einen zeiger, der ist doch vom typ int?
> daher die berechnung?
Häh? Welcher Zeiger, welche Berechnung? Zeiger sind übrigens vom Typ
<typ> *, wobei <typ> ein beliebiger Datentyp wie int, double, struct s
usw. sein kann.
> wie kann ich das erstellte struct füllen? -> oder .?
Wenn man auf die Strukturvariable v direkt zurgreifen kann, nimmt man
den .-Operator, also bspw v.element. Wenn man nur einen Zeiger vptr auf
die Struktur hat, schreibt man eben (*vptr).element oder einfacher
vptr->element. Natürlich können diese Operatoren bei Unterstrukturen
auch verkettet werden, bspw. v.unterstruktur.element oder
vptr->unterstruktur.element oder v.unterstrukturzeiger->element.
> wie ist der inkrementierungsparameter?
Was möchtest du inkrementieren? In C können nur numerische Variablen und
Zeigervariablen inkrementiert werden.
> wie bekomme ich den übergebenen zeiger wieder auseinander? anzahl =
> sizeof(alles)/sizeof(teil) ?
Aus einem Zeiger lässt dich die Größe des Objekts, auf das er zeigt,
mittels sizeof nur dann bestimmen, wenn das Objekt eine feste (nicht
dynamische) Größe hat. Bei Objekten dynamischer Größe muss die Größe
anderweitig (bspw. als zusätzliches Strukturelement) bereitgestellt
werden.