![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 25.05.2009
Сообщений: 284
|
![]()
Всем добрый вечер! Как всегда, практикуюсь по книжным примерам. Вот дошёл до темы реверсирования строк, то есть расположения букв в обратном порядке. Столкнулся с таким кодом, и не ясен стал цикл,то есть как именно происходит замена букв в нём?
Если кто может, подскажите,если не сложно? Не ясен сам цикл, и строка перед ним: end = &str[len-1]; Заранее благодарю. Вот исходник: Код:
|
![]() |
![]() |
![]() |
#2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Указателю end присваивается адрес последней буквы в строке. Указателю start присваивается адрес первой буквы в строке.
Вот этот код Код:
Затем указатели на первую и последнюю буквы смещаются на один вперед и на один назад соответственно. И так пока начало и конец не сойдутся. |
![]() |
![]() |
![]() |
#3 |
Заблокирован
Регистрация: 25.05.2009
Сообщений: 284
|
![]()
Что-то я не могу понять вот эту строку:
Код:
Ведь смотрите, строка Россия - щедрая душа, занимает 20 символов+нулевой символ окончания = 21. Теперь происходит такое условие: "Пока 21(тоесть start) < 20(end)". Как может 21 быть меньше 20,ведь тогда цикл прекратится сразу. Как это понимать? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
Берём строку: "привет"
сначала start указывает на букву п, а end - на букву т. меняем их местами, получаем тривеп. потом start указывает на р, а end - на е, опять меняем местами и получаем теиврп. потом так же меняем и и в местами: тевирп. потом start указывает на и, а end - на в. Но условие start < end уже не выполняется, т.к. start получается правее, чем end (если непонятно почему, читайте про размещение массивов в памяти и арифметику указателей). Условие не выполняется - значит цикл заканчивается, т.е. строка перевёрнута. |
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 25.05.2009
Сообщений: 284
|
![]()
Наконец-то сообразил, спасибо pu4koff
Последний раз редактировалось Golovastik; 08.09.2009 в 22:40. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Количество строк | delphin100 | Общие вопросы Delphi | 2 | 26.03.2009 11:58 |
соединение строк | ShenDy | Общие вопросы C/C++ | 4 | 21.01.2009 15:12 |
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку | Dimak24 | Помощь студентам | 1 | 19.12.2008 15:45 |
удаление строк | Dime_x | Microsoft Office Excel | 2 | 07.10.2008 13:38 |
Excel max 256 строк VS user надо 300 строк | Exo | Microsoft Office Excel | 3 | 10.01.2008 17:14 |