Как Это Работает?

Тема в разделе "Общие вопросы по С и С++", создана пользователем maltsevvv, 24 июл 2014.

  1. maltsevvv

    maltsevvv New Member

    Регистрация:
    3 июл 2014
    Сообщения:
    4
    Симпатии:
    0
    Раньше программировал на 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);
    }

    Сломал голову. Поясните как это работает?

    С уважением Виктор
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Первую можно переписать так:
    Код (Text):
    int strlen(char s[]){
    int length;
    for (length = 0; s[length]; length++);
    return length;
    }
    Теперь понятно?

    В условии любое значение сравнивается с нулем. Т.е.
    if (s[length])
    тоже самое, что
    if (0 != s[length])

    Сравни этот варинт со вторым и укажи что не понятно.
     
  3. maltsevvv

    maltsevvv New Member

    Регистрация:
    3 июл 2014
    Сообщения:
    4
    Симпатии:
    0
    Спасибо.
    Всё понял.

    С уважением Виктор
     
Загрузка...

Поделиться этой страницей