Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2015, 16:29   #1
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию Вызов функции "биноклем"

Здравствуйте!
Где можно почитать про такой метод вызова функции в си как "бинокль"

Код:
void main()
{
...
func()();
...
}
Ka2R вне форума Ответить с цитированием
Старый 17.03.2015, 17:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Первый раз о таком слышу

Это имеется ввиду?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void a()
{
    printf("A\n");
}

void b()
{
    printf("B\n");

}

void (*func())()
{
    if (rand() % 2)
        return &a;
    else
        return &b;
}

int main(void)
{
    srand(time(NULL));
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.03.2015, 18:57   #3
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Первый раз о таком слышу

Это имеется ввиду?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void a()
{
    printf("A\n");
}

void b()
{
    printf("B\n");

}

void (*func())()
{
    if (rand() % 2)
        return &a;
    else
        return &b;
}

int main(void)
{
    srand(time(NULL));
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    func()();
    return 0;
}
Допустим у нас есть функция а и b. Функцию b мы через указатель передаем в а как аргумент и вызываем.

Можно ли с помощью обозначения func ()(); вызвать из мейна функцию а, указав b как параметр?
Ka2R вне форума Ответить с цитированием
Старый 17.03.2015, 20:10   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

А почему нельзя написать просто a(&b); ?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.03.2015, 20:26   #5
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
А почему нельзя написать просто a(&b); ?
Написать то можно. Просто передо мной стоит задача освоить данный способ

Сейчас у меня вызывается вот так

Код:
Void a(<параметр1>,<параметр2>,void (*p)(<параметр3>,<параметр4>));
{
...

p(<параметр3>,<параметр4>);

...
}

Void b(<параметр3>,<параметр4>);
{
...
}

Int main()
{
...
a(<параметр1>,<параметр2>,b);
...

return 0;
}
Подскажите где можно почитать хотя бы про func()();, а то я нигде не могу найти инфу
Ka2R вне форума Ответить с цитированием
Старый 17.03.2015, 20:29   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Что за адовый бред? - каким на*ер биноклем? Какой идиот это придумал?
Что значит "освоить данный способ"?
Я тут напишу что твой препод - мудак, а ты просто дай ему ссылку, чтобы он знал.
rrrFer вне форума Ответить с цитированием
Старый 17.03.2015, 20:56   #7
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Что за адовый бред? - каким на*ер биноклем? Какой идиот это придумал?
Что значит "освоить данный способ"?
Я тут напишу что твой препод - мудак, а ты просто дай ему ссылку, чтобы он знал.
То есть описанный мной способ единственно верный?

Что тогда значит такая запись f()();?

Может быть имеет право на жизнь запись типа

Код:
a(*b)(<параметр3>,<параметр4>);

Последний раз редактировалось Ka2R; 17.03.2015 в 20:58.
Ka2R вне форума Ответить с цитированием
Старый 17.03.2015, 21:09   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
То есть описанный мной способ единственно верный?
Ты ничего не описал. По САБЖу:
Цитата:
Где можно почитать про такой метод вызова функции в си как "бинокль"
Нигде, как и про "вызов функции моноклем, октоклем и т.п."
Цитата:
Что тогда значит такая запись f()();?
К объекту f применяется оператор (). К результату он применяется еще раз.
Цитата:
Может быть имеет право на жизнь запись типа
Зачем?
rrrFer вне форума Ответить с цитированием
Старый 17.03.2015, 21:14   #9
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Ты ничего не описал. По САБЖу:

Нигде.

К объекту f применяется оператор (). К результату он применяется еще раз.

Зачем?
Я описал как у меня сейчас выводится.

Я могу в качестве операторов указывать функции?
Ka2R вне форума Ответить с цитированием
Старый 17.03.2015, 21:20   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Тебе это надо?

Код:
#include <iostream>
#include <functional>

int main() {
  auto f = []() -> std::function<void()> {
    return [] { std::cout << "hello world\n"; };
  };
  f()();
}

Цитата:
Я могу в качестве операторов указывать функции?
Ты можешь не нести чушь?
Оператор - это и есть функция. Разве нет? - а если так, что что значит "в качестве операторов указывать функции" ? - я не понимаю.
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Какова разница между "int** &a" и "int** a" в кач-ве параметра функции? dollemika Помощь студентам 3 15.01.2012 17:16
DebugAPI перехват функции "на" и "после" Cj_ Win Api 1 20.04.2010 01:11
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04