Полагаю, у вас нет проблем со строками, которые я непосредственно не скопировал
printf("%s\n",*s+1); //lack
*s+1
- это то же самое, что (*s) + 1
printf("%s\n",s[1]+6);//pink
s[1]+6
- этотакой же как (s[1]) + 6
.s[1]
имеет тип char*
, поэтому s[1]+6
указывает 6 символов вправо. Но это незаконно, : s[1]
указывает только на 6 допустимых символов.Вам просто (неудачно) повезло, что ваша программа не вылетела.
printf("%s\n",**p+1); // how does this prints ink
примерно то же самое происходит с **p+1
:)