Страницы

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

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

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

#cpp


У нас есть функция которая принимает две строки и производит слияние

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';
}

    


Ответы

Ответ 1



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

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

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