char *a = "bla"
a : is a char*, and you should use %s for printf(...);
a[1] is equivalent to *(a+1), then a[1] is a char, and you should use %c for printf(...);
&a[1] is equivalent to &(*(a+1)), then &a[1] is a char* , and you should use %s for printf(...);
This is more like a pointer question. To better understand how pointers work, think this way:
char *j;
j is a char*
*j is a char, and equivalent with j[0]
*(j+1) is a char, and equivalent with j[1]
&(*j) is achar*, and equivalent with &j[0], equivalent with j
&j is a char**
Another example:
char j**
j is a char**
*j is a char*
**j is a char, and equivalent with *(*(j+0)+0), and equivalent with j[0][0]
&j is a char***
and so on...