Как это работает?
Раньше программировал на VB. Сейчас изучаю С++.
Встретил в интернете эти функции подсчёта симолов в строке. С первой всё понятно. Перебираем символы пока не встретим '\0'. int strlen(char s[]){ int length = 0; for (; s[length] != '\0'; length++); return (length); } Но почему работают две эти? int strlen(char *s){ int length; for (length = 0; *s; length++, s++); return length; } int strlen(char *s){ char *p = s; while (*p) p++; return (p - s); } Сломал голову. Поясните как это работает? С уважением Виктор |
Ответ: Как это работает?
Цитата:
цикл инкрементирует указатель, т.е. с каждой итерацией, s ссылается на след. символ. *s даёт значение символа по указателю. когда *s выдаёт нуль-байт, цикл прерывается. такой же принцип в последнем примере, только там вместо инкрементирования длины в цикле, юзается разница между указателем на конец строки и на начало. |
Ответ: Как это работает?
Доходчиво.
Всё понял. Спасибо. |
Часовой пояс GMT +4, время: 11:07. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot