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.
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.
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
13736100cookie-checkWas ist char** in C? [duplicate]yes
stackoverflow.com/questions/604099/what-is-double-star
– Die unlustige Katze
13. November 2012 um 0:20 Uhr