![]() |
|
Модераторы: bsa |
![]()
|
|
| Rammstein |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.1.2008 Репутация: нет Всего: нет |
Здравствуйте.
Я не пока не изучаю C/C++, но просто пришлось посмотреть парсер Perl-совместимых регулярных выражений. Он написан на C. Так вот есть кусок кода:
Я не могу понять, что делает звездочка перед pp (pp имеет тип char; это и есть регулярное выражение). Я так понимаю, это перебор каждого символа (точнее байта) регулярного выражения, при чем эскейпированные символы (ну или байты, предваренные 0x5C) пропускаются. Но вот и не понятны, в принципе, две вещи. Звездочка и инкеремент pp. Подскажите, если не трудно. Это сообщение отредактировал(а) Rammstein - 1.1.2008, 03:28 |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: нет Всего: 29 |
||||
|
||||
| Rammstein |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.1.2008 Репутация: нет Всего: нет |
Хм. В данном случае зведочка - оператор косвенного доступа? Я правильно понимаю, что если pp - указатель и в нем содержится адрес в оперативной памяти, то инкрементом тут достается по очереди каждый байт? То есть, грубо говоря, переменная, содержащая регулярное выражение - массив, pp - это текущий номер элемента этого массива? А pp[1] - это фактически pp + 1, т.е. следующий за текущим байт в массиве (строке)?
Это сообщение отредактировал(а) Rammstein - 1.1.2008, 05:09 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Rammstein, верно.
|
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Rammstein, рекомендую почитать про указатели
Это фактически *(pp + 1) Добавлено через 58 секунд Ну а pp - это не номер текущего элемента, а адрес текущего элемента -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Rammstein |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.1.2008 Репутация: нет Всего: нет |
Ясно. Уже переписал на интерпретируемый язык
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Rammstein, всё выяснилось? Помечай, в таком случае, тему решённой.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |