Usually when you declare a pointer (such as an int) you'd have to assign a memory address to it:
int value = 123;
int* p = &value;
When you create a char pointer, you can assign a char array to it without the need of including an address:
char* c = "Char Array";
How does this work? Does it allocate memory and point to that? Why can't other type pointers do the same thing?