Was ist char** in C? [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
McCormickt12

Mögliches Duplikat:

Was ist Doppelstern?

Ich bin ziemlich neu in C und bin auf diese Aussage gestoßen

typedef char **TreeType

Ich habe eine ziemlich gute Vorstellung davon, was typedef tut, aber ich habe char** noch nie zuvor gesehen. Ich weiß, dass char* ein char-Array oder ähnlich einer Zeichenfolge ist. Ich bin mir nicht sicher, ob char ** ein 2D-Char-Array ist oder ob es der Zeiger auf ein Zeichen-Array ist. Ich habe mich umgesehen, kann aber nicht finden, was es ist. Wenn Sie bitte erklären könnten, was ein char** ist, oder mich in die richtige Richtung weisen könnten, wäre ich Ihnen sehr dankbar.

Vielen Dank! 🙂

  • stackoverflow.com/questions/604099/what-is-double-star

    – Die unlustige Katze

    13. November 2012 um 0:20 Uhr

Technisch gesehen ist die char* ist kein Array, sondern ein Zeiger auf a char.

Ähnlich, char** ist ein Zeiger auf a char*. Machen Sie es zu einem Zeiger auf einen Zeiger auf a char.

C und C++ definieren beide Arrays hinter den Kulissen als Zeigertypen, also ja, diese Struktur ist aller Wahrscheinlichkeit nach ein Array von Arrays von chars oder ein Array von Strings.

Es ist ein Zeiger auf einen Zeiger, also ja, in gewisser Weise ist es ein 2D-Zeichenarray. Genauso wie a char* könnte auf ein Array von hinweisen chars, a char** könnte anzeigen, dass es auf und ein Array von zeigt char*s.

Benutzer-Avatar
Eisaus

Gut, char * bedeutet ein Zeiger auf char, es unterscheidet sich von char array.

char amessage[] = "this is an array";  /* define an array*/
char *pmessage = "this is a pointer"; /* define a pointer*/

Und, char ** bedeutet ein Zeiger auf einen char-Zeiger.

Sie können in einigen Büchern nach Einzelheiten zu Zeigern und Arrays suchen.

  • In deinem Beispiel amessage ist noch ein zeiger, der auf den anfang deiner statischen größe zeigt char Reihe. Die Syntax <type>* weist oft auf ein Array hin, obwohl <type>* selbst ein Zeiger zu sein.

    – kevintodisco

    13. November 2012 um 0:38 Uhr

  • @ktodisco Dieses Beispiel stammt von K&R. amessage ist ein Array, das gerade groß genug ist, um die Zeichenfolge und aufzunehmen \0 das initialisiert es.

    – Eisbruch

    13. November 2012 um 1:05 Uhr

  • Wenn Sie sich die Disassemblierung dieser beiden Aussagen ansehen, werden Sie feststellen, dass sie beide im Kern Hinweise sind. Ich verweise auch auf den zweiten Beitrag hier.

    – kevintodisco

    13. November 2012 um 1:35 Uhr

1373610cookie-checkWas ist char** in C? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy