2016-01-02 121 views
-1

我有一個項目在C.在功能adminpanel()有一些選擇,如添加,刪除,修改等每個這些選擇是一個函數。現在,例如我打電話add()函數當它結束時,我需要返回在adminpanel()函數乞討做出另一種選擇。這發生在刪除()等 是否有可能設置爲函數返回值add(),delete()等功能adminpanel()?如果沒有,我必須將其設置爲返回值?是否有可能從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

相關問題