Zum Forum springen
Benachrichtigungen
Alles löschen

Kurze Frage zu Char* in C++

5 Beiträge
3 Benutzer
0 Reactions
653 Ansichten
Hate4Fun
Beigetreten: 26.03.2011
PokerStrategist

Ich hab mir die Frage gestellt, weshalb bei diesem programmcode:

#include <iostream>
using namespace std;

int main()
{
    int h[] = {15,14,13,12,11};
    int* n = &h[0];
    char test[] = "Hallo";
    char* teststring = &test[0];
    cout << teststring << " " << n << endl;
return 0;
}

die ausgabe folgendermaßen aussieht:

> Hallo 0x28ff04

Ich habe doch im Prinzip für den Integer Datentyp und Char Datentyp beide male ein Array deklariert, wobel ich jeweils einen zeiger genommen habe, der auf das erste element zeigt. warum wird bei der ausgabe von char* die komplette zeichenkette wiedergegeben?

Danke für Hilfe!


Antwort
Zitat
4 Antworten
qLxD
Beigetreten: 18.01.2010
PokerStrategist

google weiß alles...

how-does-cout-work-when-given-an-array

*n statt n


Antwort
Zitat
Kampfschildkroete
Beigetreten: 05.06.2006
PokerStrategist

Original von qLxD
google weiß alles...

how-does-cout-work-when-given-an-array

*n statt n

Blöd nur, dass er nach dem char-Pointer fragt und nicht nach dem int-Pointer :)

der Stream ist unterschiedlich überladen, abhängig vom Übergabeparameter.
Bei einem char* werden solange Daten eingelesen, bis ein NULL-Zeichen kommt.
Sieht man auch ganz gut, wenn man mit dem Debugger reinsteppt.

Du könntest z.B. vor der Ausgabe den Wert in ein einzelnes char schreiben.


Antwort
Zitat
qLxD
Beigetreten: 18.01.2010
PokerStrategist
Spoiler


Spoiler


Spoiler



Antwort
Zitat
Hate4Fun Themenstarter
Hate4Fun
Beigetreten: 26.03.2011
PokerStrategist

Original von Kampfschildkroete

Original von qLxD
google weiß alles...

how-does-cout-work-when-given-an-array

*n statt n

Blöd nur, dass er nach dem char-Pointer fragt und nicht nach dem int-Pointer :)

der Stream ist unterschiedlich überladen, abhängig vom Übergabeparameter.
Bei einem char* werden solange Daten eingelesen, bis ein NULL-Zeichen kommt.
Sieht man auch ganz gut, wenn man mit dem Debugger reinsteppt.

Du könntest z.B. vor der Ausgabe den Wert in ein einzelnes char schreiben.

heißt also dass der stringstream für den fall, dass ihm ein int* übergeben wird anders reagiert, als wenn man ihm ein char* übergibt. danke für die hilfe!


Antwort
Zitat
Teilen: