• Твой профиль заполнен на 0%. Заполни за 1 минуту, чтобы тебя нашли единомышленники и работодатели. Заполнить →

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

  • Автор темы Автор темы maltsevvv
  • Дата начала Дата начала
M

maltsevvv

Раньше программировал на 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);
}

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

С уважением Виктор
 
Первую можно переписать так:
Код:
int strlen(char s[]){
int length;
for (length = 0; s[length]; length++);
return length;
}

Теперь понятно?

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

Сравни этот варинт со вторым и укажи что не понятно.
 
Спасибо.
Всё понял.

С уважением Виктор
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab