char *a = "bla"
a
: char*
, и вы должны использовать %s
для printf(...)
;
a[1]
эквивалентно *(a+1)
, тогда a[1]
- это char
, и вы должны использовать %c
для printf(...)
;
&a[1]
эквивалентно &(*(a+1))
, тогда &a[1]
- это char*
, и вы должны использовать %s
для printf(...)
;
Это больше похоже на вопрос указателя. Чтобы лучше понять, как работают указатели, подумайте так:
char *j;
j
является char*
*j
является char
и эквивалентно j[0]
*(j+1)
является char
и эквивалентно j[1]
&(*j)
- это char*
, и эквивалентно &j[0]
, эквивалентно j
&j
char**
1045 *
Другой пример:
char j**
j
является char**
*j
является char*
**j
- это char
, и эквивалентно *(*(j+0)+0)
, и эквивалентно j[0][0]
&j
является char***
и так далее ...