jooee schrieb:
> Hallo,
> ja gut dass dies am Formatierungszeichen s und d liegt glaub ich euch ja
> aber weshalb bekomme ich in c++ bei folgendem Code nicht die Addresse?
>
> #include <iostream>
> using namespace std;
>
> int main()
> {
> char zeile[10]="hallo";
> char *p_zeile;
> p_zeile = &zeile[0];// mit dem &_operator weise ich doch p_zeile die
addresse von h zu.
Ja. Äquivalent wäre:
> cout << p_zeile << endl; // Ausgabe ohne Derefernzierungsoperator müsste mir
doch die Addresse liefern!
Nein. Wie kommst du darauf, daß das so sein müßte? p_zeile ist ein
Zeiger auf char, und cout interpretiert den immer als Zeiger auf den
Anfang eines Strings, den es dann ausgibt. Der Unterschied zu printf
ist, daß letzteres variable Argumentlisten verwendet und daher keine
Ahnung hat, von welchem Typ die übergebenen Argumente sind. Deshalb muß
man mit dem Formatstring mit Sachen wie %s angeben, welchen Typ man
übergeben hat. cout kann durch überladene Operatoren automatisch den Typ
erkennen, und wenn der char* ist, wird eben der Text ausgegeben.
> return 0;
> }