11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
|
||||||
1 | ||||||
Возвращение функциями указателей11.09.2009, 22:30. Показов 2882. Ответов 21
Метки нет (Все метки)
Читаю про указатели, тут для примера,предоставляется код. Программа ищет какую-то подстроку в строке. Кто нибудь может объяснить,каким образом ищется подстрока из этого кода,если не сложно. Заранее благодарю.
0
|
11.09.2009, 22:30 | |
Ответы с готовыми решениями:
21
Возвращение функциями указателей Возвращение из функции массива указателей Задачка с функциями: возвращение данных двумя способами Возможно ли возвращение функцией двух значений? Именно возвращение, не ссылка или указатель |
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
11.09.2009, 23:25 | 2 |
Это где такой пример есть?
В общем Код
while(*p2 == *p) //Это неизвестно что делается Внутри адрес увеличивается на 1 и проверяется снова. Код
if(!*p2) //Это неизвестно что такое Да и код кривой возвращает не подстроку, а все начиная с той строки.
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||
11.09.2009, 23:51 | 3 | |||||
Это дает то, что ты можеш читать всю строку начиная с некоего адреса(индекса) в этой строке а который указывает этот указатель.
Пока существует твоя подстрока которую ты ищеш("три") и пока элемент из подстроки(sub) равен элементу строки(str) то смещаться по одной и второй строке на один символ вправо и проделывать ту же проверку пока условие истинно. Добавлено через 25 минут Код вообще кривой. Начиная с 30 строки там творится что-попало. Автор как-то непродуманно написал программку. Я б так
1
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|||||||||||
11.09.2009, 23:52 | 4 | ||||||||||
Думаю так будет понятней
P.S. Если не секрет, что за книгу читаешь? Там исходник выглядит так же, как ты его выложил здесь?
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
12.09.2009, 00:39 | 5 | |||||
На самом деле это какая-то нелепая реализация библиотечной функции strstr.
Короче, вот Вам на С с указателями, переделайте на С++ при желании...
как-то не сразу дошло... на самом деле там примерно то же самое... это проверка того, что строка sub ещё не закончилась и очередной символ в ней равен символу из строки, в которой sub ищется... Вот у меня эта же проверка: это если все символы из sub нашлись в str и sub закончилась (после очередного приращения *p2 == '\0'), вернуть start... Действительно чуднАя реализация... Что хоть за книжка-то?
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
12.09.2009, 00:50 | 6 |
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
||||||
12.09.2009, 01:02 | 7 | |||||
а я-то голову ломаю - забыл, думаю, что-то...
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
12.09.2009, 01:03 | 8 |
rangerx, хотя бы в том, что не выделяется память под лишние указатели, не производятся ненужные операции и выдается вполне адекватный ответ о результатах работы функции. Да, ты можеш сказать, что там пара указателей и пара операций чтения/записи, но ты представь, что это запрос на какой-нибудь поисковый сервер и какие задержки по времени на ожидание ответа от сервера, если это можно обработать и прервать еще перед отправкой запроса. Надо изначально писать правильно, а не в расчете что там пара операций
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
12.09.2009, 02:23 | 9 |
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
12.09.2009, 07:55 | 10 |
rangerx, я говорил в общем про конкретную мысль, а не алгоритм А постфикс - это копипаст
0
|
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
|
|
14.09.2009, 22:59 [ТС] | 11 |
Данный код, который был выше,находил слово, и от него выводилась вся строка.
Не подскажите,как найти чисто одно слово из текста? Не знаю как это реализовать программой используя указатели.
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||
14.09.2009, 23:38 | 12 | |||||
Golovastik, что понимаеш под "найти слово". В смысле его индекс или что? Вот чисто возврат
подстроки
1
|
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
|
||||||||||||||||
14.09.2009, 23:51 [ТС] | 13 | |||||||||||||||
Вроде так, не расскажите немножко по циклу, как он работает, и ещё перед ним про строку:
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
||||||||||||||||
15.09.2009, 00:02 | 14 | |||||||||||||||
или вот то же самое, но с
индексом
в параметрах или нет? Если в параметрах, то передача по указателю, если нет, то показывает данные какого типа возвращает функция
0
|
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
|
||||||||||||||||
15.09.2009, 00:10 [ТС] | 15 | |||||||||||||||
Спасибо за ответ выше. Эта строка:
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
15.09.2009, 00:15 | 16 |
потому что char - это один символ, а char* - массив символов
0
|
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
|
|
15.09.2009, 00:50 | 17 |
M128K145,
потому что char - это один символ, а char* - массив символов а теперь - правильный ответ (: потому что char - это один символ, а char* - это указатель на один символ (что, впрочем, не мешает запихать туда много симаолов)
0
|
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
|
|||||||||||
15.09.2009, 00:54 [ТС] | 18 | ||||||||||
как знать? Что будет,если не прописать знак звёздочки в этой программе,тоесть написать:
0
|
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
|
|
15.09.2009, 01:00 | 19 |
Да тупо не скомпилируется, будет ошибка некорректного преобразования char* в char. *start же указатель, а не символ.
0
|
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
|
|
15.09.2009, 01:01 | 20 |
если без звезды то это значит,вернется один символ,а со звездой возвращается указатель на символ
0
|
15.09.2009, 01:01 | |
15.09.2009, 01:01 | |
Помогаю со студенческими работами здесь
20
возвращение значений функциями Возвращение массива указателей В чем различие между функциями VBA и функциями Excel? Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |