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.