2016-06-11 2 views
0

Немного утомительно, чтобы объяснить, но я попробую. У меня есть функция, которая берет адрес в качестве входа. Затем вместо того, чтобы сначала сохранить переменную, поэтому я могу передать адрес этой переменной на функцию, я хотел бы ввести функцию непосредственно в качестве параметра. Есть ли способ сделать это?Если у меня есть функция, которая принимает переменную указателя в качестве ввода, есть ли способ передать функцию как параметр?

Что-то вроде этого:

#include <iostream> 
#include "main.h" 

using namespace std; 

int main() 
{ 
    printFunction(returnOne()); 
    return 0; 
} 

void printFunction(int *a) { 
    cout << a << endl; 
} 

int returnOne() { 
    return 1; 
} 
+1

Возможный дубликат [Можно ли получить доступ к локальной папке за пределами ее области?] (Http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its- scope) –

+4

Возможный дубликат [Как передать функцию в качестве параметра в C?] (http://stackoverflow.com/questions/9410/how-do-you-pass-a-function-as-a-parameter -in-c) –

+0

@MarcBarbeau Нет OP не спрашивает о указателях функций. –

ответ

2

Ну, очевидно, returnOne() не соответствует для передачи в void printFunction(int*) относительно типа возвращаемого, это должно быть что-то вроде:

int* returnOne() { 
    static int one = 1; 
    return &one; 
} 

или

int* returnOne() { 
    return new int(1); 
} 

Другим вариантом было бы взять адрес результаты как

printFunction(&returnOne()); 
      //^

, но это дает в непредсказуемое поведение для реализации как

int returnOne() { 
    return 1; 
} 

, поскольку он принимает адрес временного значения.

Смежные вопросы