Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Возврат указателей

Статус
В этой теме нельзя размещать новые ответы.

Norbert27

Компетентный
Возврат указателей

Функции могут возвращать указатели. Указатели возвращаются, как и данные любых других типов, и не вызывают никаких особых проблем. Если, однако, учесть, что указатели являются одним из наиболее сложных средств C++, краткое обсуждение этой темы вполне уместно.

В приводимой ниже программе демонстрируется использование указателя в качестве возвращаемого значения. Функция get_substr() просматривает строку в поисках заданной подстроки. Функция возвращает указатель на первую найденную подстроку. Если заданной подстроки найти не удалось, возвращается нулевой указатель. Например, если анализируется строка "Я люблю C++", а в качестве искомой задана подстрока "люблю", то функция вернет указатель на первую букву л в слове "люблю".

Код:
// Возврат указателя.

#include <iostream>
using namespace std;

char *get_substr(char *sub, char *str);

int main()
{ 
  char *substr;

  substr = get_substr ("три", "один два три четыре");

cout << "подстрока найдена: " << substr;

return 0;
}

// Возвращает указатель на подстроку или нулевой указатель,
// если подстрока не найдена.
char *get_substr(char *sub, char *str)                                  <----------- [B]get_substr()[/B] возвращает указатель на [B]char[/B]
{
  int t;
  char *p,  *p2,  *start;

  for(t=0; str[t]l t++) {
    p = &str[t]; // начальная установка указатей
    start = p;
    p2 = sub;
    while (*p2 && *p2==*p) { // проверка на наличие подстроки
      p++;
      p2++;
    }

    /* Если p2 указывает на завершающий 0 (т.е. на конец подстроки), значит, вся подстрока найдена. */
    if (!*p2)
      return start; // вернуть указатель на начало подстроки
   }
   return 0; // подстрока не найдена
 }
Вот вывод этой программы:
подстрока найдена: три четыре
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу