unsigned char *zeiger = &daten[0];
läßt sich übrigens einfacher schreiben als:
unsigned char *zeiger = daten;
Wenn man ein Array ,,im Ganzen'' irgendwo benutzt (Zuweisung,
Übergabe an eine Funktion), dann wird von diesem stets nur ein
entsprechender Zeiger weitergegeben. Die Zeigerarithmetik
funktioniert damit dann genauso:
unsigned char *zeiger = daten + 1;
wäre identisch zu
unsigned char *zeiger = &daten[1];
Übrigens ist "char" ein schlechtes Beispiel für einen Datentyp
für Zeigerarithmetik, da die Größe eines "char" ohnehin ein
Byte ist. Interessanter ist schon:
int daten[] = {
3, 4, 1, 22785;
};
int *zeiger;
zeiger = daten + 3;
In diesem Falle zeigt "zeiger" nicht etwa auf 3 Bytes nach
dem Anfang von "daten", sondern auf wieviel Speicherplatz
auch immer 3 Elemente vom Typ "int" belegen, d. h. es wird
damit genauso wieder ein Zeiger auf eine Speicherstelle
dargestellt, die 22785 enthält. Ist also ebenfalls identisch
zu
zeiger = &daten[3];
Ansonsten wollte Fabian sicher wissen, wie man malloc()
benutzt, aber das sollte man wirklich in einem guten Buch
nachlesen. Es ist zu viel, als daß ich darüber noch dazu in
einem häßlich zu bedienenden Web-Forum (*) eine Abhandlung
schreiben würde.
(*) Das bezieht sich nicht etwa nur auf dieses Forum hier,
sondern allgemein auf Web-Foren. Das bißchen Form-Editor in
einem Web-Browser ist einfach gruselig, wenn man ansonsten
einen ordentlichen Editor gewohnt ist. Für Mailinglisten oder
Newsgruppen kann ich meinen Standardeditor benutzen, da bin
ich noch eher geneigt, ein paar Sätze mehr zu schreiben.