char are different types, but it’s not immediately apparent in all cases. This is because arrays decay into pointers, meaning that if an expression of type
char is provided where one of type
char* is expected, the compiler automatically converts the array into a pointer to its first element.
Your example function
printSomething expects a pointer, so if you try to pass an array to it like this:
char s = "hello"; printSomething(s);
The compiler pretends that you wrote this:
char s = "hello"; printSomething(&s);