Рассматривая, как вы делаете в этом коде, давайте просто скажем: да, вы получаете значения мусора, когда вы даете s
/ s+1
/ s+2
... in printf()
. Это потому, что ваш спецификатор формата %c
(тип char
) не соответствует s
(тип - строка). Исправьте это, изменив последнее на тип char
, и ваши проблемы будут исправлены.
Вам не нужно беспокоиться о том, откуда приходит это значение, поскольку в конце дня это значение мусора. и будет разным для разных людей, использующих код. И я не вижу возможности использовать его.
Попробуйте следующий код ниже, и ваш код будет работать нормально:
char *s="hello world";
printf("%c\n",*s);
или
char *s="hello world";
printf("%c\n",s[0]);
Эти ответы обсуждаются в ответах и комментариях выше. Но вы должны также попробуйте это,
char s[]="hello world";
printf("%c\n",s[0]);
Потому что, хотя указатели присутствуют в C, swift, et c. Они не одобряются, потому что представляют серьезные проблемы для безопасности памяти и сбора мусора.
Редактировать: Stackoverflow fam нужно несколько голосов в текущем состоянии, я даже не могу комментировать. (Только если я прав)