Moin!
Wie man Zeiger verwendet, weiß ich ja mittlerweile so
einigermaßen, aber mir ist noch was unklar:
- Was ist, wenn 2 Sterne vor der Variable stehen?
char **variablenname
Das ist ein Doppelzeiger oder besser: Ein Zeiger auf einen
Zeiger. Wie ein Zeiger eine Adresse von einer Variable
enthält, enthält ein Doppelzeiger eben eine Adresse von einem
anderem Zeiger. Alles klar? =)
Verständlicher wird es vielleicht, wenn man bemerkt, dass
char \*\* bla;
identisch ist mit
char \* bla[];
- Was heißt es, wenn der Stern nach dem Typ steht?
text[i]=(char*) malloc(laenge+1);
Das bedeutet nix anderes als wenn er auch vor dem
Variablennamen steht. Nur in deinem Fall ist das ein Cast in
einen Pointer auf Char.
Interessanter weise ist das auch eine Besonderheit der „malloc“ Funktion. Sie liefert prinzipiell zwar einen Zeiger mit der Korrekten Ausrichtung auf das reservierte Element zurück, aber dieser Zeiger ist zunächst vom Typ „void“. Er muss in jedem Falle zwingend per cast-operator in den entsprechenden Typen umgewandelt werden. So wird z.B. auch folgendes häufig verwendet:
typedef struct
{
char \* irgend;
int \* eine;
double \* benötigte;
char \* struktur;
} bla;
bla \* blub;
blub = (bla \*) malloc(1000\*sizeof(bla));
Gruß
Fritze