Указатели. Массив указателей на функции

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Трудно понимать указатели, но указатели понимать нужно. Одна из отдельных тем в программировании C++ — это тема указателей на функции. Что это такое? Зачем нужно, как использовать. Сам по себе указатель вызывает массу непониманий и массу вопросов, а тут еще массив зачем-то с функциями к нему. (Я о теме)

Массив указателей на функции можно использовать в разных целях. Один из вариантов такого использования — это если, к примеру, у вас в коде есть одна куча разных функций, но схожих по смыслу и другая куча разных функций, не похожих на первые функции, но похожих друг на друга. Вот можно похожие функции собрать в массив и потом уже вызывать из массива. Не возьмусь утверждать, но скорее всего так будет проще не запутаться. Я не буду приводить пример с десятками функций, а приведу один из простейших.

Код Visual Studio

Чтобы этот материал лучше окреп в сознании, возьмем еще 1 пример. В этом примере программа будет вести себя в зависимости от того, что выбрал пользователь. Принципиально этот пример вообще ничем не отличается от вышеприведенного, но может помочь понять то, что не получилось понять с первого раза.

Код Visual Studio

  • (*P[my_choose])(my_choose);

P[my_choose] — выделяет указатель, расположенный в элементе массива с индексом my_choose
* — разыменовывает указатель, чтобы вызвать функцию
(my_choose) — my_choose передается в функцию как аргумент

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

2 комментария: Указатели. Массив указателей на функции

  • DanMan говорит:

    А каким образом аргумент передавать в функцию???

    • admin говорит:

      Все функции внутри массива должны быть определены с одинаковыми аргументами.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор программирование на языке ада

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок