Запитання з тегом «function-pointers»

Покажчик функції - це вказівник на функцію, який може зберігатися у змінній. Це дозволяє вибрати час запуску, яку функцію виконувати.

11
Як функціонують покажчики на C?
Останнім часом у мене був досвід роботи з покажчиками функцій у С. Отже, продовжуючи традицію відповідати на власні запитання, я вирішив скласти невеликий підсумок самих основ, для тих, хто потребує швидкого заглиблення у цю тему.
1232 c  function-pointers 


21
Який найближчий замінник покажчика функції на Java?
У мене є метод, який становить близько десяти рядків коду. Я хочу створити більше методів, які роблять точно те саме, за винятком невеликого розрахунку, який змінить один рядок коду. Це ідеальний додаток для передачі вказівника функції для заміни цього рядка, але у Java немає функціональних покажчиків. Яка моя найкраща альтернатива?

8
"Розпакування" кортежу для виклику відповідного вказівника функції
Я намагаюся зберігати std::tupleрізну кількість значень, які згодом будуть використані як аргументи для виклику покажчика функції, який відповідає збереженим типам. Я створив спрощений приклад, який показує проблему, яку я намагаюся вирішити: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":" << b …

7
Розуміння typedefs для функціональних покажчиків на C
Я завжди був трохи спотиканий, коли читав код інших людей, який мав typedefs для покажчиків на функції з аргументами. Я пригадую, що мені знадобилося деякий час, щоб обійтись таким визначенням, намагаючись зрозуміти числовий алгоритм, написаний на С деякий час тому. Отже, ви могли б поділитися своїми порадами та думками щодо …

3
Чому визначення покажчиків функцій працюють з будь-якою кількістю амперсандів '&' або зірочок '*'?
Чому наступні роботи? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); (*p6_foo)(); …
216 c++  c  function-pointers 

8
Проходження захоплення лямбда як вказівник функції
Чи можливо передавати лямбда-функцію як функцію вказівника? Якщо так, я повинен робити щось неправильно, тому що я отримую помилку компіляції. Розглянемо наступний приклад using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ …

13
C не так складно: void (* (* f []) ()) ()
Я щойно побачив фотографію сьогодні і думаю, що буду вдячний за пояснення. Отже ось малюнок: Я вважав це заплутаним і цікавився, чи такі коди колись практичні. Я гуглив картинку і знайшов ще одну картинку у цій редакції reddit, і ось ця картинка: Тож це "читання спірально" щось дійсне? Це як …

17
Функції зворотного дзвінка на Java
Чи є спосіб передати функцію зворотного дзвінка у методі Java? Поведінка, яку я намагаюся імітувати, - це делегат .Net, який передається функції. Я бачив людей, які пропонують створити окремий об’єкт, але це здається непосильним, однак я усвідомлюю, що іноді надмірний рівень - це єдиний спосіб робити речі.

6
Використання загальних об’єктів std :: function з функціями-членами в одному класі
Для одного класу я хочу зберегти деякі покажчики функцій на функції-членів одного класу в одному об'єкті, що mapзберігає std::function. Але я не вдається відразу на цей код: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; Я отримую error C2064: term …


2
Як працює код C, який друкує від 1 до 1000 без циклів чи умовних операторів?
Я знайшов Cкод, який друкує від 1 до 1000 без циклів або умовних умов : Але я не розумію, як це працює. Чи може хтось пройти код і пояснити кожен рядок? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1); }

11
Функціональні покажчики на Java
Це може бути щось загальне і тривіальне, але, здається, у мене виникають проблеми з пошуком конкретної відповіді. У C # існує концепція делегатів, яка сильно стосується ідеї функціональних покажчиків від C ++. Чи є подібний функціонал у Java? З огляду на те, що вказівники дещо відсутні, який найкращий спосіб для …

14
Чому функції покажчиків та покажчиків даних несумісні в C / C ++?
Я читав, що перетворення покажчика функції на покажчик даних і навпаки працює на більшості платформ, але не гарантовано. Чому це так? Чи не повинні обидва бути просто адресами в основну пам'ять і тому бути сумісними?

9
Як я можу передати функцію члена, де очікується вільна функція?
Питання таке: врахуйте цей фрагмент коду: #include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d + %d = %d", a, b, a + b); } }; void function1(void (*function)(int, int)) { function(1, 1); } void test(int a,int b) { printf("%d - %d = %d", a , …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.