考慮下面的小例子:如何將指針返回到稍微修改過的函數版本?
#include <stdio.h>
double square(double x);
double cube(double x);
int main(){
double (*pArray[2]) (double x) = {square, cube};
return 0;
}
double square(double x){
return (x*x);
}
double cube(double x){
return (x*x*x);
}
現在,假設*我們希望,在僞代碼將採用類似這樣(的+
是不是一個真正此外,記)功能:
functionPointer funcB(y, functionPointer funcA){
functionPointer funcC = y + &funcA;
return funcC;
}
使得funcC
具有與funcA
相同的簽名並且呼叫funcC(x)
返回y + funcA(x)
。我們怎樣才能做到這一點?我不能想出辦法去做。
*可能的東西是有用的像
for(double y = 0; y < 1; y += 0.1){
for(double x = 0; x <= y; x += 0.1){
printf("%f\n", funcB(y, pArray[0])(x));
printf("%f\n", funcB(y, pArray[1])(x));
}
}
'y'的類型是什麼? – dbush
你爲什麼要這麼做? – Martin
它看起來非常類似於js中的某種回調,我懷疑它會影響OP的問題風格。無論如何,這是什麼打印..?那個新的C函數?在這裏,使用僞代碼並將它與C方言混合,當他們讀到這個問題時,肯定會給C的新手造成混淆。 – t0mm13b