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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tzavr
-13 / 0 / 1
Регистрация: 08.03.2014
Сообщений: 16
#1

Разобрать синтаксис цикла - C++

19.03.2014, 18:35. Просмотров 372. Ответов 12
Метки нет (Все метки)

не пойму цикл:
C++
1
for(i=0;s[i];i++)
точнее не пойму,что означает s[i]?это s[i]!='/0'?
if(!(*str))- да и что это за условие?str==0 или str!=0?
пожалуйста помогите,
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 18:35     Разобрать синтаксис цикла
Посмотрите здесь:

Ошибка в теле цикла, синтаксис - C++
Собственно, на скриншоте видно жалобы компилятора.

Синтаксис - C++
Кусок кода на C++. Помогите разобраться что означает в данном случае последовательность символов "|=" ? UDF_RC CForm1Class::CForm1(...

Новый синтаксис using в C++11 - C++
зачем напридумывали лишних слов?

Про синтаксис using - C++
Доброе время суток Часто встречаю такую конструкцию: #include <iostream> using std::cout; using std::cin; #include <string>...

Непонятный синтаксис. - C++
В VC 2010 вместо int main(int argc, char *argv) написано int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdline,...

Конструкторы. синтаксис - C++
Добрый вечер! Не совсем понятно, как описываются конструкторы: что в круглых скобках, что в фигурных, когда нужно двоеточие. Например: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6927 / 4120 / 942
Регистрация: 30.01.2014
Сообщений: 6,915
19.03.2014, 18:40     Разобрать синтаксис цикла #2
Цитата Сообщение от Tzavr Посмотреть сообщение
,что означает s[i]?это s[i]!='/0'?
Да. Почти. Это bool(s[i]).
Цитата Сообщение от Tzavr Посмотреть сообщение
if(!(*str))- да и что это за условие?
Если в *str - ноль, то условие будет истинным.
Байт
Эксперт C
15681 / 10008 / 1504
Регистрация: 24.12.2010
Сообщений: 18,801
19.03.2014, 18:42     Разобрать синтаксис цикла #3
Цитата Сообщение от Tzavr Посмотреть сообщение
что означает s[i]?это s[i]!='/0'?
Да, именно так. Проверяется конец строки.
Цитата Сообщение от Tzavr Посмотреть сообщение
if(!(*str))
Совершенно тоже самое. str указывает на нулевой байт
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2014, 18:43     Разобрать синтаксис цикла #4
if(!(*str))
Если указатель NULL, то выполняется условие.

for(i=0;s[i];i++)
Странная организация for. Думаю, пока есть s[i] элемент. Если выйдет за пределы массива - цикл завершится.
Байт
Эксперт C
15681 / 10008 / 1504
Регистрация: 24.12.2010
Сообщений: 18,801
19.03.2014, 18:46     Разобрать синтаксис цикла #5
DrOffset,

Не по теме:

Ну вот, мы с вами мыслим совершенно одинаково. Только вы на 2 минуты быстрей



Добавлено через 1 минуту
Цитата Сообщение от Тамика Посмотреть сообщение
Если указатель не NULL, то выполняется условие.
В этом утверждении 2 ошибки

Добавлено через 39 секунд
Цитата Сообщение от Тамика Посмотреть сообщение
Странная организация for.
Отнюдь. Самая обычная.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2014, 18:47     Разобрать синтаксис цикла #6
В этом утверждении 2 ошибки
Я уже поправила.

Добавлено через 1 минуту
Цитата Сообщение от Байт Посмотреть сообщение
Отнюдь. Самая обычная.
Может. Но почти никогда не видела такое использование.
Байт
Эксперт C
15681 / 10008 / 1504
Регистрация: 24.12.2010
Сообщений: 18,801
19.03.2014, 18:49     Разобрать синтаксис цикла #7
Цитата Сообщение от Тамика Посмотреть сообщение
Я уже поправила.
Только одну. Вторая осталась. *str - это уже не указатель. Это - элемент массива
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2014, 18:51     Разобрать синтаксис цикла #8
Цитата Сообщение от Байт Посмотреть сообщение
*str - это уже не указатель.
Согласна. Но править уже нельзя.

Добавлено через 1 минуту
Хотя ей ничего не мешает быть просто разыменованым указателем.
Байт
Эксперт C
15681 / 10008 / 1504
Регистрация: 24.12.2010
Сообщений: 18,801
19.03.2014, 18:53     Разобрать синтаксис цикла #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Tzavr, Чтоб не сбивать вас с толку, вот вам 4 эквивалентных организации цикла
C++
1
2
3
4
for(i=0; s[i]!='\0'; i++)
for(i=0; s[i]; i++)
for(str=s ; *str; str++)
for( str=s; *str!=0; str++)
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2014, 18:55     Разобрать синтаксис цикла #10
Это понятно.
Но ТС написал
C++
1
if(!(*str))
Я о том, что это может быть и не массив. А просто указатель. Непонятно ведь как оно использовано в коде.
Байт
19.03.2014, 18:55
  #11

Не по теме:

Цитата Сообщение от Тамика Посмотреть сообщение
Но править уже нельзя.
Это не важно. Главное, что мы договорились

Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
19.03.2014, 18:58     Разобрать синтаксис цикла #12
Это не важно. Главное, что мы договорились


Добавлено через 45 секунд
Я ещё во многом плаваю, потому не удивляйтесь глупым вопросам.)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2014, 19:11     Разобрать синтаксис цикла
Еще ссылки по теме:

Непонятен синтаксис - C++
Доброго времени суток! Хотелось бы попросить вашего совета. код double **E = new double *; в данном отрывке...

Неправильный синтаксис? - C++
Товарищи форумчане помогите пожалуйста разобраться, изучать С++, начал недавно, возникла проблема связанная с синтаксисом на картинке, ...

Синтаксис и библиотеки C++ - C++
1. Что бы вы исправили в синтаксисе с++ 2. Что бы вы исправили в стандартной библиотеке языка с++. Задали вот эти вопросы. А так как...

синтаксис (void *) - C++
Поясните, пожалуйста, что означает (void *) buffer? using namespace std; const int BUF = 100; int main() { char * buffer =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Байт
19.03.2014, 19:11     Разобрать синтаксис цикла
  #13

Не по теме:

Цитата Сообщение от Тамика Посмотреть сообщение
Я ещё во многом плаваю,
Это ничего. Главное - не переставайте барахтаться.

Yandex
Объявления
19.03.2014, 19:11     Разобрать синтаксис цикла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru