2012-04-14 10 views
0

Ich weiß genug, dass ein * bezieht sich auf einen Zeiger. Ich versuche immer noch, dass in meinem Kopf zu sortieren (Zeiger im Vergleich zu Referenzen.)Was bedeutet das * in einer C++ - Methodensignatur?

Ich arbeite durch eine C++ Buch und es gibt eine Methode Signatur es wie folgt aus:

void DrawBitmap(char *filename, int x, int y) 

Was tut die * bedeuten in dieser Situation? akzeptiert es einen Zeiger oder eine Referenz auf eine Variable?

Danke für jede Hilfe ... und für die Aufnahme einer zugegebenermaßen noob Frage.

+0

Er erwartet ein _array_ von 'char'-s (die C-Art der Darstellung einer Zeichenfolge). Das Array wird als Zeiger auf das erste Element übergeben. –

+7

@JamesMcLaughlin Tatsächlich ist es ein Zeiger und kein Array –

+0

Sie müssen wirklich zurück zum Buch gehen –

Antwort

4

Es bedeutet, dass Sie ihm einen Zeiger auf ein Zeichen übergeben, was normalerweise bedeutet, dass der Zeiger auf das erste Zeichen in einem Zeichenfeld zeigt. Mit einem Zeiger (*) können Sie Arithmetik, z.B. (Dateiname + 1), um das zweite Zeichen zu erhalten. Wenn Sie eine Referenz (&) verwenden, implizieren Sie, dass die Empfangsfunktion mit den Originaldaten arbeiten soll. Ohne die Referenz wird der Funktion eine Kopie und nicht das Original übergeben.

+0

Sehr prägnant. Danke für deine Antwort. – quakkels

+0

"Wenn Sie eine Referenz (&) verwenden, implizieren Sie" - sehr schlechte Wortwahl.Du "implizierst" nichts. –

+0

Bitte geben Sie eine bessere Wahl der Wörter, dann, und sagen Sie mir, wie es keine Implikation bietet. – Grod

0

char *filename ist Zeiger auf ein Zeichen, das Sie an DrawBitmap Methode übergeben. Für weitere Details bitte see this link.

1

Andere haben Ihre Frage bereits direkt beantwortet; einige der folgenden Links sind lohnenswert für Informationen über Zeiger (und ihre syntaktische Beziehung zu Arrays in C++), sie sind es wert, zu studieren, und ich würde empfehlen, ein wenig Zeit zu lesen durch sie, um Ihren Kopf herum Ideen:

http://www.c-faq.com/aryptr/

http://www.augustcouncil.com/~tgibson/tutorial/ptr.html

http://www.augustcouncil.com/~tgibson/tutorial/arr.html

http://www.eternallyconfuzzled.com/tuts/languages/jsw_tut_pointers.aspx

http://www.daweidesigns.com/cgi-bin/pointers.php

+0

Danke für die Ressourcen. – quakkels