2
我想創建一個函數指針,它需要一個指向double的指針作爲參數。在main
中寫入的正確語法是什麼?指針指向一個函數,需要指針參數
這是我有,但它不斷吐出錯誤。
void (*ptr)(double, double, (*double), (*double));
我想創建一個函數指針,它需要一個指向double的指針作爲參數。在main
中寫入的正確語法是什麼?指針指向一個函數,需要指針參數
這是我有,但它不斷吐出錯誤。
void (*ptr)(double, double, (*double), (*double));
這是你將宣佈在一個函數的參數列表double *
參數以同樣的方式:
void (* ptr) (double, double, double *, double *);
可以被分配給一個函數,如:
void something (double w, double x, double *py, double *pz) {
}
這一般情況下都是如此,不管它有多複雜。例如,一個指針指向一個函數,它接受一個int
和另一個函數指針(其指向採用一個double
和void *
的功能,並返回一個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);
順便說一句,有時我發現'typedef'類型對語法上更簡單的東西很有幫助。然後,我可以清楚地看到發生了什麼,並將原始類型替換回來。例如,'typedef double * double_ptr'使'void(* ptr)(double,double,double_ptr,double_ptr)'清零,然後將'double * '回來顯示你正確的語法。 –