Question: I'm using C++ to understand how exactly pointers work. I have this piece of code using arrays, which I'm using just to understand how the equivalent works with pointers.

```
int main() {    
    int arr[10] = {1,2,3};    
    char arr2[10] = {'c','i','a','o','\0'};
    cout << arr << endl;
    cout << arr2 << endl;
}

```

However when I run this, `arr` outputs the address of the first element of the array of ints (as expected) but `arr2` doesn't output the address of the first element of the array of chars; it actually prints "ciao".

What is it that I'm missing or that I haven't learned yet about this?

Answer: 
Because cout's `operator <<` is overloaded for `char*` to output strings, and `arr2` matches that.

If you want the address, try casting the character array as a void pointer.
There is a standard overload for char\* that outputs a NUL terminated string.