Originally Posted by
tabstop
Another point to keep in mind, speaking of memory storage, is that the declaration str[10] allocates us room for 10 characters (of which we can use 9) while the declaration *str gives us no memory whatsoever.[1] If we use *str, it must either be initialized to a string literal (in which case, we can't change it), or must have allocated memory to it with malloc().
[1] Of course, we get some memory, namely enough memory to put an address in, but not any memory we can use to store characters in.