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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IIIYT
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 4
#1

Указатель на функцию - C++

29.03.2014, 09:15. Просмотров 177. Ответов 6
Метки нет (Все метки)

Здравствуйте!
Есть вот такой элемент кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SimpleCat* FunctionTwo (SimpleCat * theCat);
int main()
{
    ....................
    SimpleCat Frisky;
    ......................
    FunctionTwo (&Frisky);
    ......................
}
 
SimpleCat* FunctionTwo (SimpleCat *theCat)
{
    ...........................................
    return theCat;
}
Не могли бы разъяснить SimpleCat* Function (SimpleCat *theCat). Что это? Указатель на функцию?
Просто допустим, если бы была вот такая запись, я бы понял:
C++
1
2
SimpleCat FunctionTwo (SimpleCat *theCat);
SimpleCat * pFunc2 = FunctionTwo (SimpleCat *theCat);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2014, 09:15     Указатель на функцию
Посмотрите здесь:

C++ Указатель на функцию
Указатель на функцию C++
C++ Указатель на функцию
Указатель на функцию C++
Указатель на функцию C++
C++ Указатель на функцию
Указатель на функцию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
29.03.2014, 09:25     Указатель на функцию #2
Это прототип. Если бы вы пропустили первую строку Вашего кода (удалили прототип), была бы ошибка компиляции при обращении к этой функции т.к. main() не знал бы по каким правилам обращаться к этой функции, а прототип это ему сообщает.

Не по теме:

В разделе с++ сегодня была преодолена отметка в более 900 000 ответов. Круто.

IIIYT
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 4
29.03.2014, 09:34  [ТС]     Указатель на функцию #3
Нет, то что объявляется прототип я понимаю. Видимо я неясно выразил свой вопрос.
Мне неясен синтаксис этой строки:
C++
1
SimpleCat* FunctionTwo (Simple *theCat);
Например, мне ясно, что указатель в параметре, работает так, если бы его прописали в следующем виде:
C++
1
SimpleCat *theCat = &Frisky; // (ориентируясь на код в первом посте)
А вот прототип мне не понятен. Точнее мне не ясно, если FunctionTwo - это указатель, то на что он указывает? И может ли функция быть указателем? Или в этом коде что-то пропущено, по причине очевидности, которая мне не ясна?

P.S. Этот код из учебника.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12528 / 7090 / 797
Регистрация: 27.09.2012
Сообщений: 17,500
Записей в блоге: 2
Завершенные тесты: 1
29.03.2014, 10:08     Указатель на функцию #4
Цитата Сообщение от IIIYT Посмотреть сообщение
Точнее мне не ясно, если FunctionTwo - это указатель, то на что он указывает?
какой указатель? Это объявление функции.
Если убрать эту строчку, то когда компилятор дойдет до строчки
C++
1
FunctionTwo (&Frisky);
о функции FunctionTwo он ничего еще не знает и будет ошибка компиляции.
а добавив прототип функции:
C++
1
SimpleCat* FunctionTwo (SimpleCat * theCat);
Вы указываете компилятору, что такая функция есть, принимает она такие то параметры и возвращает такие и звать её вот так, так что мол если встретишь - не ругайся, она просто лежит где-то в другом месте, компоновщик разберется без тебя.

Добавлено через 2 минуты
можете просто переставить функции местами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//SimpleCat* FunctionTwo (SimpleCat * theCat);
SimpleCat* FunctionTwo (SimpleCat *theCat)
{
    //...........................................
    return theCat;
}
 
int main()
{
    //....................
    SimpleCat Frisky;
    //......................
    FunctionTwo (&Frisky);
    //......................
}
IIIYT
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 4
29.03.2014, 10:10  [ТС]     Указатель на функцию #5
Спасибо за ответы. Про прототипы и работу функций я уже давно выучил и это трудностей не вызывает. Но меня смущает вот этот символ в конце типа функции "*". Что он означает в данном случае?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12528 / 7090 / 797
Регистрация: 27.09.2012
Сообщений: 17,500
Записей в блоге: 2
Завершенные тесты: 1
29.03.2014, 10:16     Указатель на функцию #6
Цитата Сообщение от IIIYT Посмотреть сообщение
Что он означает в данном случае?
то что функция возвращает указатель на такой-то тип. Указатели, надеюсь, учили?

Не по теме:

SimpleCat... хм, а не из учебника ли Либерти это?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2014, 10:28     Указатель на функцию
Еще ссылки по теме:

Указатель на функцию C++
указатель на функцию C++
Указатель на функцию C++
Указатель на функцию C++
C++ Указатель в функцию

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
IIIYT
0 / 0 / 0
Регистрация: 29.03.2014
Сообщений: 4
29.03.2014, 10:28  [ТС]     Указатель на функцию #7
Да, именно из него. =-)
Указатели вроде прошел. Но про возвращающий тип в виде указателя что-то не отложилось видимо, пойду пересмотрю.
Спасибо за ответ!
Yandex
Объявления
29.03.2014, 10:28     Указатель на функцию
Ответ Создать тему
Опции темы

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