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

Возвращение функциями указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать сведения о книгах http://www.cyberforum.ru/cpp-beginners/thread233230.html
Вот это прога, которая выносит мой мозг уже ни один час.... Преподу надо, чтоб прога по второму варианту (коду) работала так же как первая вот прога рабочая (Первая) #include <conio.h> #include <dos.h> #include <iostream.h> #include <string.h> #include <stdio.h>
C++ Метод Рунге-Кутта 4-го порядка #include <stdio.h> #include <iostream> #include <math.h> using namespace std; double f(double x, double y) { return(2*y/x+x*x*pow(2.7,x)); } http://www.cyberforum.ru/cpp-beginners/thread233224.html
Что такое Особенности Адресной Арифметики? C++
Что такое Особенности Адресной Арифметики? где-то вроде читал,что к этому относится инкрементирование...
C++ МАССИВЫ:Что такое приведённый индекс?
Что такое приведённый индекс? ну подскажите пожалуйста(
C++ Массива:что такое приведённый индекс? http://www.cyberforum.ru/cpp-beginners/thread233192.html
Что такое приведённый индекс?
C++ Математический функции Где можно прочитать про всякие математические функции в c++? Пользуюсь #include <math.h> Интересует, особенно, как записать число Пи. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
24.01.2011, 05:40     Возвращение функциями указателей
Цитата Сообщение от Rusl_v Посмотреть сообщение
Получаеться что *start передаёт не по одной букве а передаёт ВСЮ строку после буквы 'т'???Так что-ли получаеться?
start - это указатель на строку (объявленный как char* start).
Поэтому, возвращая start, ты возвращаешь указатель на некоторую область памяти (в которой, предположительно, храниться массив символов - строка).
Вот тебе пример: вызов функции get_substr c аргументами sub = "ab" (подстрока, которую мы ищем) и str = "cabk" (строка, в которой мы ищем подстроку). При этом, и sub, и str сами являются указателями, т.е. хранят некоторый адрес, по которому хранится строка. Предположим, что str = offset, т.е. по адресу offset в памяти распологается символ 'c', по адресу offset + 1 -- символ 'a', offset + 2 -- символ 'b', по адресу offset + 3 -- символ 'k', по адресу offset + 4 -- символ '\0' (нуль-терминатор, символ, который в С играет роль конца строки):

http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{array}{|c||c|c|c|c|c|c|}address & offset + 0 & offset + 1 & offset + 2 & offset + 3 & offset + 4 & offset + 5\\<br />
\hline \\<br />
character & 'c' & 'a' & 'b' & 'k' & 0 & ... \\<br />
\end{array}

Первое вхождение подстроки начинается с символа 'a', поэтому мы возвращаем адрес offset + 1, а по этому адресу хранится строка "abk".

Не по теме:

Цитата Сообщение от panicwassano Посмотреть сообщение
код из книги Шилдта, причем там все подробно расписано
По хорошему, автору бы надо было объявлять формальные параметры и локальные указатели в функции get_substr со спецификатором const

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