Possible Duplicate:
Why does cout print char arrays differently from other arrays?
If I have this code:
char myArray[] = { 'a', 'b', 'c' };
cout << myArray;
It gives me this output:
abc
However, if I have this code:
int myArray[] = { 1, 2, 3 };
cout << myArray;
It gives me this output:
0x28ff30
Why does it not print out 123?
The reason that the first piece of code works is that the compiler is implicitly converting the array into a
const char *character pointer, which it’s then interpreting as a C-style string. Interestingly, this code is not safe because your array of characters is not explicitly null-terminated. Printing it will thus start reading and printing characters until you coincidentally find a null byte, which results in undefined behavior.In the second case, the compiler is taking the
intarray and implicitly converting it into anint *pointer to the first element, then from there to aconst void *pointer to the first element. Printing aconst void *pointer withcoutjust prints its address, hence the output you’re getting.Hope this helps!