That's the only way to print a string in one step.
The %s format for printf expects a pointer to a char.
Here are some examples.
Code:
#include <stdio.h>
int main(void)
{
char a[] = "hello";
char *b = "hello";
// I assume you understand this
printf("The string is %s\n", "hello" );
// the array name 'a' decays to '&a[0]'
printf("The string is %s\n", a );
printf("The string is %s\n", b );
// explicitly point at the first element
printf("The string is %s\n", &a[0] );
printf("The string is %s\n", &b[0] );
// explicitly point at the 4th element
printf("The string is %s\n", &a[3] );
printf("The string is %s\n", &b[3] );
// now for some weirdness
// a "string" is just an anonymous char array.
printf("The string is %s\n", &"hello"[0] );
return 0;
}