Übergeben von Char-Array in eine Funktion

8

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 *.

    
Daniel Del Core 30.04.2012, 12:21
quelle

9 Antworten

10

Ihre Funktion sollte sein:

%Vor%     
Cratylus 30.04.2012, 12:22
quelle
8

Sie müssen Zeiger auf char übergeben

%Vor%

Sie müssen dann darauf achten, dass Sie die Größe jedes Arrays kennen, damit Sie nicht am Ende indizieren, in Ihrem Fall sind es alle 64.

    
EdChum 30.04.2012 12:23
quelle
4
%Vor%     
aaronqli 30.04.2012 12:22
quelle
4

Sie übergeben Strings (Zeichenarrays) als Zeiger auf das erste Zeichen des Arrays:

%Vor%

Da Arrays automatisch in Zeiger zerfallen, wenn sie an eine Funktion übergeben werden, müssen Sie nur das Zeichenfeld übergeben und es funktioniert. Also in deinem Beispiel:

%Vor%     
orlp 30.04.2012 12:23
quelle
4

Der Compiler sagt dir genau das ... Er wird als char* übergeben. Verwenden Sie also entweder char* oder char ar[] .

    
Jonathon Reinhart 30.04.2012 12:23
quelle
3

Sie können ein Array auf zwei Arten übergeben:

(1) Konventioneller C-Stil:
Hier übergeben Sie die Adresse und erhalten mit einem Zeiger

%Vor%

(2) C ++ als Referenz übergeben:
Sie übergeben das Array als Referenz mit Größenangabe:

%Vor%

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.

    
iammilind 30.04.2012 12:25
quelle
2

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:

%Vor%     
Luchian Grigore 30.04.2012 12:25
quelle
0

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.

    
biril 30.04.2012 12:28
quelle
0
%Vor%

Sie haben vergessen, die Paranthese zu setzen, setzen Sie sie wie im obigen Code.

    
phantasmagoria 30.04.2012 12:26
quelle

Tags und Links