2014-02-20 136 views

回答

8

這是你將宣佈在一個函數的參數列表double *參數以同樣的方式:

void (* ptr) (double, double, double *, double *); 

可以被分配給一個函數,如:

void something (double w, double x, double *py, double *pz) { 
} 

這一般情況下都是如此,不管它有多複雜。例如,一個指針指向一個函數,它接受一個int和另一個函數指針(其指向採用一個doublevoid *的功能,並返回一個char*)作爲參數:

void (* ptr) (int, char * (*) (double, void *)); 

然後:

char * g (double w, void *) { 
    ... 
} 

void f (int x, char * (* y) (double, void *)) { 
    ... 
} 

// usage, elsewhere: 
ptr = &f; 
ptr(0, &g); 
+0

順便說一句,有時我發現'typedef'類型對語法上更簡單的東西很有幫助。然後,我可以清楚地看到發生了什麼,並將原始類型替換回來。例如,'typedef double * double_ptr'使'void(* ptr)(double,double,double_ptr,double_ptr)'清零,然後將'double * '回來顯示你正確的語法。 –

相關問題