PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verstehe &wort[i] Ausgabe nicht



forest
30-01-2005, 13:47
Hallo Zusammen!

Ich erstelle ein Programm welches ein Wort abfragt und in


char wort[20];

speichert.

Ich will nun die Adresse jedes einzelnen Buchstabens ausgeben.
Das geht mit einer Schleife die folgendes beinhaltet:


cout << " " << int(&wort[i]);

Das ist soweit klar. Jetzt die Fragen:

1. Ich habe es erst ohne int versucht und bekomme beispielsweise wenn in wort "Hallo" steht und i=1 ist "allo" als Ausgabe. Wieso gibt er den Rest der Zeichenkette aus, also ab Feld 1?

2. Warum genau muss ich da ein int voranstellen?

Wär schön wenn mir das jemand mal klar machen kann. Das was ich bisher gelesen habe hilft mir vor allem nicht bei Frage 1. Wüsste zudem nicht wonach ich da im Forum suchen sollte falls es dazu schon einen Post geben sollte.

Gruß forest

locus vivendi
30-01-2005, 14:58
1. Ich habe es erst ohne int versucht und bekomme beispielsweise wenn in wort "Hallo" steht und i=1 ist "allo" als Ausgabe. Wieso gibt er den Rest der Zeichenkette aus, also ab Feld 1?
Weil der Stream-Insertion-Operator << für char const* so überladen ist, das die Zeichenkette, welche mit dem Element auf die der Zeiger zeigt, beginnt, ausgegeben wird.

Siehe z.B. hier:
http://www.dinkumware.com/manuals/reader.aspx?b=p/&h=ostream.html


2. Warum genau muss ich da ein int voranstellen?
Musst du nicht. Im Gegenteil, ich würde eher auf void const* casten. Damit ist sichergestellt, das keine Werte "verlorengehen", denn der Wertebereich von int muss ja nicht alle möglichen Zeiger umfassen. Außerdem ist es üblich, das ein Zeiger auf void Hexadezimal formatiert ausgegeben wird. Das finde ich ästhetischer.