Es ist ein Irrglaube, dass Sie in weitere Schwierigkeiten führen:
Ich weiß, dass „Input“ in Form eines char-Array sein.
NOPE: durch den Umfang dieser Funktion ist ein input
Zeiger auf ein Zeichen. Die Funktion hat keine Möglichkeit zu wissen, wo ein solcher Zeiger herkommt.
Wenn es beim Aufruf der Funktion aus einem Array übernommen wurde, wird es eine pointer to the first element of that array
sein.
Da Zeiger ein arithmetisches haben, die Offsets und weil der []
Operator angewandt Zeiger übersetzt a[b] = *(a+b)
per Definition, egal in welchem Code hinzufügen kann, wenn ein a
Zeiger ist, *a
und a[0]
sind perfekt synonym.
denken an eine Anordnung als eine Folge von Kästen und einen Zeiger als Hand Zeigefinger
einen Offset zu einem Finger Zugabe (wie finger+2
) bedeutet "Wieder Punkt es beiseite "und die Aufhebung der Referenzierung (wie *finger
) bedeutet" schau hinein, was es auf zeigt ".
Der Zeiger [] auf Zeigern ist nur eine Verknüpfung, um beide Vorgänge gleichzeitig auszuführen.
Arrays sind eine andere eindeutige Sache. Denken Sie nicht an sie, wenn Sie mit Zeigern arbeiten, da in komplexeren Situationen, wie multidimensionalen Arrays oder Multi-Indirektion-Zeigern, der Ausdruck a [b] [c] nicht mehr auf die gleiche Weise funktioniert.
Soll diese zweite Codezeile in die Funktion eingefügt werden? Wenn ja, schreibe es so. Und ja, wenn Sie das tun, wird das Zeichen, auf das "input" zeigt, in "var" kopiert. –
Bei Nissen auswählen, alles was Sie garantieren können ist, dass es ein Zeichen gibt, auf das der Zeiger zeigt. Alles andere ist eine Annahme. Um mehr als ein Zeichen zu übergeben, verwenden Sie 'std :: string' oder' std :: vector 'oder einen anderen Container. –