Zuweisen von Speicher -, Doppel-Zeiger?

Ich habe Schwierigkeiten zu verstehen, wie Speicher zuweisen
auf ein double-Zeiger.
Ich will Lesen ein array von strings und speichern Sie es.

    char **ptr;
    fp = fopen("file.txt","r");
    ptr = (char**)malloc(sizeof(char*)*50);
    for(int i=0; i<20; i++)
    {
       ptr[i] = (char*)malloc(sizeof(char)*50);
       fgets(ptr[i],50,fp);
    }

statt diese ich weisen Sie einfach einen großen Speicherblock und
speichern Sie die Zeichenfolge

  char **ptr;
  ptr = (char**)malloc(sizeof(char)*50*50);

wäre das falsch? Und wenn ja, warum ist das so?

Nennen Sie es nicht eine "doppelte pointer" - dies bekommt Sie off auf dem falschen Fuß geistig - es ist ein Zeiger auf einen Zeiger.

InformationsquelleAutor lazy_hack | 2010-02-13

Schreibe einen Kommentar