Or
char str[4];
strcpy(str, "foo");
Syntactic sugar makes the language sweeter by providing easier and quicker ways to do more complicated things.
NOTICE though that you'd be able to modify the contents of the string in the second and, the third, and the forth examples because these wouldn't be constant strings as it's the case with the string literal example. To be honest, there are situations where you have to create a string probably in one of the other two thesethree ways to be able to modify the string's contents.