Jeg undrer mig lidt over at jeg ikke kan skrive:
char cha = 'r';
char* chap = &cha;
cout<<chap;
eller:
char cha = 'r';
cout<<&cha;
Gør jeg det, får jeg i hvert fald ikke adressen som hvis jeg f.eks brugte int. Hvordan kan det være?
En streng skal afsluttes med en 0-byte og det bliver din
char cha = 'r';
...ikke.
Hvis du laver:
int number = 7;
cout << &number << endl;
...så bliver adressen på 'number' skrevet ud. Hos mig:
.robert@robert:~/code/V1_NBServer$ ./test
0xbffff8e4
...men hvis du giver 'cout' en pointer til char vil den tro at det er en null termineret streng og så vil alle bytes som tilfældigt er på stakken blive skrevet ud indtil en 0-byte bliver fundet.
Denne kode:
char cha = 'r';
cout << &cha << endl;
Giver dette output:
robert@robert:~/code/V1_NBServer$ ./test
rHùÿ¿tY@