Adressos in C

Hallo zusammen, wisst ihr warum immer für das char keine Adresse ausgegeben wird?
VG & DANK Dani

source.c:
#include
#include

int main()
{
int givenInt;
float givenFloat;
double givenDouble;
char givenChar;
std::string givenString;

std::cout<<"address of a is at &Int = "<< &givenInt<<"\n";
std::cout<<"address of a is at &Float = "<< &givenFloat<<"\n";
std::cout<<"address of a is at &Double = "<< &givenDouble<<"\n";
std::cout<<"address of a is at &Char = "<< &givenChar<<"\n";
std::cout<<"address of a is at &String = "<< &givenString<<"\n";

return 0;

}

Ausgabe im Jupyter Notebook:

address of a is at &Int = 0x7fff10d5c008
address of a is at &Float = 0x7fff10d5c00c
address of a is at &Double = 0x7fff10d5c018
address of a is at &Char =
address of a is at &String = 0x7fff10d5c010

Hab die Lösung - aber das Verhalten erklärt sich mir noch nicht richtig:

src:
std::cout<<„address of a is at &Char = „<< (void *) &givenChar<<“\n“;

Ausgabe:
address of a is at &Char =
address of a is at &Int = 0x7fff49c07858
address of a is at &Float = 0x7fff49c0785c
address of a is at &Double = 0x7fff49c07868
address of a is at &Char = 0x7fff49c07857
address of a is at &String = 0x7fff49c07860

Warum muss auf einen Zeiger auf nichts gecastet werden, damit eine Ausgabe erfolgt?

&givenChar liefert (char *), und der <<-Operator gibt bei (char *) die Zeichenfolge statt der Adresse aus (spezieller Overload für diesen Typ).
Casten auf einen anderen Zeigertyp verhindert das.

1 Like

Dank dir für die schnelle und gute Antwort!!
Keine Regel ohne Ausnahme (ist ja) wie bei menschlichen Sprachen… :grin: :wave: :+1:

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.