char str = "Test"; char *str = "Test";
char str = "Test";
Is an array of
chars, initialized with the contents from "Test", while
char *str = "Test";
The main difference between them is that the first is an array and the other one is a pointer. The array owns its contents, which happen to be a copy of
"Test", while the pointer simply refers to the contents of the string (which in this case is immutable).