Ваш вопрос немного неясен, но я думаю, что у меня есть:
В следующем коде почему замена "* ptr_str" на "ptr_str [i]" в усечении цикла for?
Я думаю, вы имеете в виду изменить это:
for (i=0; *ptr_str; i++)
printf("%c", *ptr_str++);
return 0;
к этому:
for (i=0; ptr_str[i]; i++)
printf("%c", *ptr_str++);
return 0;
Второй усекается, потому что вы продвигаетесь i
и ptr_str
, поэтому измененная начальная позиция ptr_str
плюс измененная начальная позиция i
заканчивает тем, что обрезает вас слишком рано (или, что еще хуже, имеет нечетное количество символов и переполняет данные, которые не ваши). Второй пример, который усекает, эквивалентен:
for (i=0; ptr_str[i * 2]; i++)
printf("%c", ptr_str[i]);
return 0;
Теперь вы видите, почему оно усекается?