1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
1

Функция-указатель

01.05.2017, 00:29. Показов 927. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сегодня был в книжном и интереса ради полистал книгу по C++. Наткнулся на вот такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int val;
int *fun() { return &val; }
 
int main()
{
    val = 0;
    cout << val << "\n";
    *fun() = 10;
    cout << *fun() << "\n" << val << "\n";
    val = 100;
    cout << *fun() << "\n" << val << "\n";
    return 0;
}
Вопрос: какой у этого всего практический смысл? И в какого рода задачах необходимо использовать подобные функции?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2017, 00:29
Ответы с готовыми решениями:

Функция, получающая указатель на обычную функцию, получает указатель на метод класса
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая...

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Функция и указатель
Помогите доделать прогу. Эта прога. разделяет русские и латинские буквы на две строки. Нужно...

7
47 / 28 / 12
Регистрация: 23.01.2013
Сообщений: 125
01.05.2017, 01:11 2
C++
1
int *fun() { return &val; }
вообще-то, тут просто возвращается указатель, потом разыменуется, записуется число и т.д))
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.05.2017, 01:22  [ТС] 3
behollder, вопрос в том, какой в этом смысл? В книге явного ответа нет, только "ой как круто! вот можем функцию слева писать и менять значение переменной через эту функцию". А зачем нам это никто не ответил
0
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
01.05.2017, 01:24 4
Лучший ответ Сообщение было отмечено Hitoku как решение

Решение

Цитата Сообщение от Hitoku Посмотреть сообщение
какой у этого всего практический смысл?
Скорее всего, это был просто пример из главы про указатели.

Это не 'функция-указатель', а самая простецкая функция, которая возвращает адрес глобальной переменной val, которую определили выше.

Цитата Сообщение от Hitoku Посмотреть сообщение
C++
1
*fun() = 10;
Эквивалентно
C++
1
*(&val) = 10;
Добавлено через 1 минуту
Цитата Сообщение от Hitoku Посмотреть сообщение
какой в этом смысл?
Автор, думаю, просто показывал возможности указателей.
1
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.05.2017, 01:28  [ТС] 5
Цитата Сообщение от meJevin Посмотреть сообщение
Это не 'функция-указатель'
ну да, второпях название сколотил - не подумал

Добавлено через 2 минуты
meJevin, т.е. фактически никакого смысла в этом особого нет? Просто расценивать это как обычный пример?
0
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
01.05.2017, 01:29 6
Hitoku, да.
0
47 / 28 / 12
Регистрация: 23.01.2013
Сообщений: 125
01.05.2017, 01:31 7
Hitoku, Просто непонятно было в названии темы "Функция-указатель". А пример явно оторван из жизни и просто демонстрирует возможности. Возьмите лучше пример, паттерн фабрику и посмотрите точно так же, что так можно делать.
1
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
01.05.2017, 03:07 8
Вынести логику за функцию например принимать функцию по сравнению/фильтрации/получение(создание) кого то объекта и внутри себя ее вызывать.
По сути делегируем часть какого то функционала на вызывающую сторону, она нам передает функцию которую мы у себя внутри вызываем.

Например:
... filter(vector<int>&, fn) <- где fn возвращает true/false в зависимости какое число есть передали
C++
1
2
3
4
bool fn(int x)
{
    return x > 10 ? true : false;
}
0
01.05.2017, 03:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2017, 03:07
Помогаю со студенческими работами здесь

Функция, возвращающая указатель
Нужно написать функцию, входящие параметры которой являются указателем на структуру. Заполнить в...

Функция, возвращающая указатель
Добрый вечер. Требуется написать программу, содержащую структуру вида type1 *имя(type2); т.е....

Структура-указатель-функция
Приветы. Как в функцию затащить указатель на конкретный элемент структуры, чтоб можно было например...

Функция, возвращающая указатель
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type*...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru