Форум программистов, компьютерный форум CyberForum.ru

Как работает функции подсчёта символов в строке - C++

Восстановить пароль Регистрация
 
maltsevvv
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 13
24.07.2014, 23:56     Как работает функции подсчёта символов в строке #1
Раньше программировал на VB. Сейчас изучаю С++.
Встретил в интернете эти функции подсчёта симолов в строке.
С первой всё понятно. Перебираем символы пока не встретим '\0'.
C++
1
2
3
4
5
int strlen(char s[]){
    int length = 0;
    for (; s[length] != '\0'; length++);
    return (length);
}
Но почему работают две эти?
C++
1
2
3
4
5
int strlen(char *s){
    int length;
    for (length = 0; *s; length++, s++);
    return length;
}
C++
1
2
3
4
5
int strlen(char *s){
    char *p = s;
    while (*p) p++;
    return (p - s);
}
Сломал голову. Поясните как это работает?

С уважением Виктор.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6428 / 3802 / 882
Регистрация: 30.01.2014
Сообщений: 6,601
25.07.2014, 00:18     Как работает функции подсчёта символов в строке #2
maltsevvv,
'\0' - это символ с кодом 0. В C++ выражение в while(*p) приводится к bool, то есть в случае, если в *p - ноль, то он приведется к false и мы выйдем из цикла. Это проверка на конец строки. В другом цикле аналогично.
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,646
Записей в блоге: 1
25.07.2014, 00:19     Как работает функции подсчёта символов в строке #3
Вопрос на уровне "почему 7*8=56?" В каком месте они не должны работать и почему?
Возьми строку "12" и по шагам опиши, какие значения переменных будут на каждом шаге.
maltsevvv
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 13
25.07.2014, 00:26  [ТС]     Как работает функции подсчёта символов в строке #4
DrOffset, спасибо.

Тема закрыта.
Yandex
Объявления
25.07.2014, 00:26     Как работает функции подсчёта символов в строке
Ответ Создать тему
Опции темы

Текущее время: 01:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru