簡體   English   中英

在C中使用函數作為參數

[英]Using a function as a parameter in C

我試圖使用函數作為另一個函數的參數。 我想根據我傳遞的函數得到不同的計算。 我嘗試通過編寫這個程序來實現這個:
http://pastebin.com/CJfFarVa
碼:

問題是我一遍又一遍地得到這個錯誤:

trapeze.c:14:8: error: conflicting types for ‘exp2’
double exp2(int number);

trapeze.c: In function ‘main’:
trapeze.c:28:35: error: expected expression before ‘int’
exp_2 = trapeze(0, 1, n, exp2(int x));
                               ^
trapeze.c:29:35: error: expected expression before ‘int’
exp_1 = trapeze(0, 1, n, exp1(int x));
                               ^
trapeze.c: At top level: 
trapeze.c:58:8: error: conflicting types for ‘exp2’
double exp2(int number)

注意:我不想使用函數指針。
對不起,如果這是一個簡單的問題。

C不是函數式編程語言,這意味着函數不是第一類對象,因此,你不能將函數作為其他函數的參數傳遞,你必須使用指針函數。

將呼叫更改為trapeze

exp_2 = trapeze(0, 1, n, exp2);
exp_1 = trapeze(0, 1, n, exp1);
exp_1 = trapeze(0, 1, n, exp1(int x));
                         ^^^^^^^^^^^---

這一行將執行exp1() ,然后將其返回值作為參數傳遞給trapeze 你不能在函數調用中聲明變量。 聲明參數類型是在函數定義中完成的,而不是在函數CALL中完成的。

exp_1 = trapeze(0, 1, n, exp1(x));

沒關系。

原型

double trapeze(int a, int b, double n, double (*f)(int x));

呼叫

exp_2 = trapeze(0, 1, n, exp2);//exp2 : used c99
exp_1 = trapeze(0, 1, n, exp1);

你必須打電話:

exp_1 = trapeze(0, 1, n, exp1);

這樣trapeze()獲取指向exp1()的指針,而不是在某個隨機參數上調用exp1的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM