Wie übergibt man ein Char-Array an eine Funktion?
Deklarationen
%Vor%Funktionsaufruf
%Vor%Prototyp
%Vor%und Fehler "main.cpp", Zeile 86: Fehler: formales Argument 1 vom Typ char im Aufruf von Mail :: putAddress (char, char, char, char) wird übergeben char *.
Der Compiler sagt dir genau das ... Er wird als char*
übergeben. Verwenden Sie also entweder char*
oder char ar[]
.
Sie können ein Array auf zwei Arten übergeben:
(1) Konventioneller C-Stil:
Hier übergeben Sie die Adresse und erhalten mit einem Zeiger
(2) C ++ als Referenz übergeben:
Sie übergeben das Array als Referenz mit Größenangabe:
Dies hilft Ihnen, die Array-Größe sofort korrekt zu machen (Zeiger ist nicht erlaubt). Dies kann mit template
ebenfalls verbessert werden.
Sie können auch die Option std::string
verwenden, um eine Kopie des gesamten Arrays zu erstellen und als automatische Variable zu verwalten.
Um Ihren Code zu korrigieren:
%Vor%aber es ist immer noch falsch. Arrays zerfallen in Zeiger, deshalb wird es kompiliert, führt aber zu einem Fehler, wenn die Argumente nicht null-terminiert sind. Sie sollten auch die Größe übergeben, wenn Sie diesen Ansatz wählen.
Allerdings , da dies C ++ und nicht C ist, schlage ich vor, stattdessen std::string
zu verwenden:
Der Fehler des Compilers macht Sinn, da fromName tatsächlich ein Zeiger auf das (erste Element des) fromName-Arrays ist. Dies ist nur C ++ (und einfache C) -Syntax.
Um ein char-Array an eine Funktion zu übergeben, sollten Sie tun, was Sie gerade tun, dh einen Zeiger auf das (erste Element des) Arrays übergeben.
Sie müssen also nur
ändern %Vor%bis
%Vor%PS: Ihr nächstes Problem besteht darin, die Länge jedes Arrays zu kennen (putAddress zu kennen). Wenn diese jedoch behoben sind, haben Sie kein Problem.
Sie haben vergessen, die Paranthese zu setzen, setzen Sie sie wie im obigen Code.