When you declare char p [], you declare an array of characters (which is readable and writable), and this array is initialized with some sequence of characters, i.e. "This is test" is copied to the elements in this array.
When you declare char * p, you declare a pointer that points directly to some constant literal, not a copy. They can only be read.
DanS
source share