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?