char str[] = "Test";
Is an array of chars
, initialized with the contents from “Test”, while
char *str = "Test";
is a pointer to the literal (const) string “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).