Страницы

Поиск по вопросам

понедельник, 17 декабря 2018 г.

Почему в первом коде не нужен нулевой символ?

У нас есть функция которая принимает две строки и производит слияние
void strcat(char *to, const char *from) { while (*to) to++; while (*to++ = *from++); }
Почему здесь не требуется добавить нулевой символ в отличие например от такого кода
void strcat(char *to, const char *from) { while (*to != '\0') { to++; }
while (*from != '\0') { *to = *from; from++; to++; } *to = '\0'; }


Ответ

Нулевой символ здесь добавляется автоматом.
Выражение
*to++ = *from++
выполняет присвоение, после чего возвращает новое значение *to. То есть, сначала ноль скопируется из *from в *to, а уж потом он будет проанализирован в while, который прекратится.

Комментариев нет:

Отправить комментарий