Pointer gibt zuviel aus?

10/08/2014 06:24 Klickboy#1
Edit2: Fehler gefunden, bei cout << *charZeiger fehlte das *.

Hallo, ich arbeite mich grade durch ein C++ Buch.
Ich bin grad bei der Sektion Pointer angekommen.
Folgenden Code habe ich so aus dem Buch entnommen:

Code:
#include <iostream>
using namespace std;

int main() {
	char *charZeiger;         // Definition der Zeigervariable
	charZeiger = 0;           // Sichern als Nullzeiger
	char Buchstabe = 'A';     // Variable soll später das Ziel sein
	charZeiger = &Buchstabe;  // Adresse von Buchstabe zuweisen
	cout << charZeiger;	  // Ausgabe
}
Also Ausgabe bekomme ich Dinge wie:
Code:
Agö�
//oder
Ag��]�
//oder
A��
//oder
�
//oder
A��[��
Soll das so sein ? Ich haette erwartet das nur 'A' ausgegeben wird.

Ich bedanke mich für eure Hilfe im Vorraus. und wünsche einen guten Morgen.


Edit:
Eventuell hilfreiche Angaben:
Betriebssystem: Linux Mint 64bit
IDE: Eclipse mit cdt
10/08/2014 13:43 Delinquenz#2
Du versuchst einen char* auszugeben. Wenn du 'A' ausgeben möchtest, musst du den Pointer dereferenzieren. In deinem Beispiel entspräche das cout << *charZeiger;

Das liegt daran, dass die Klasse ostream einen überladenen << Operator hat, der jegliche char* als String behandelt. Die Strings, die aus char* bestehen, enden erst, wenn ein '\0' auftritt, wie man auch in deinem Beispiel sehen kann. Wenn du unbedingt die Adresse eines einzelnen Chars ausgeben möchtest, kannst du das Ganze zu void* casten.