2016-01-02 1 views
-1

У меня есть проект в C. В функции adminpanel() есть некоторые варианты, такие как добавление, удаление, изменение и т. Д. Каждый из этих вариантов является функцией. Теперь, например, я вызываю функцию add() , и когда он заканчивается, мне нужно возвратиться к попрошайничеству с помощью функции adminpanel 0 (), чтобы сделать еще один выбор. Это происходит с удалить() и т.д. Можно ли установить в качестве возвращаемого значения в функции дополнения(), удалить() т.д. функцию админпанели()? Если нет, то, что я должен установить как возвращаемое значение?Можно ли вернуть функцию из другой функции в C?

+0

Нет, вы не можете вернуть функцию или массив из функции. Можно вернуть указатель на функцию. – haccks

+0

@ T.J.Crowder; Нет. Это не обман. – haccks

+0

@haccks: Стандарт для «это обман»: «Ответ на другой вопрос отвечает на этот вопрос». Так что да, это обман. (Если бы я делал правила, правило, вероятно, было бы иным.) –

ответ

2

можно вернуть указатель на функцию:

int inc(int x) { return x + 1; } 
int dec(int x) { return x - 1; } 

int(* func(int t)) (int) 
{ 
    return t ? &inc : &dec; 
} 

int test_C(void) 
{ 
    int(*f1)(int) = func(1); // f1 = &inc 
    int x1 = (*f1)(1);   // x1 = 2    

    int(*f2)(int) = func(0); // f2 = &dec 
    int x2 = (*f2)(1);   // x2 = 0  

    return 0; 
} 
+1

'return inc;' будет делать, а также '... = f (1);' будет. – alk

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