C語言之函式名作為函式的輸入引數

2021-10-10 12:12:32 字數 1769 閱讀 1215

1)函式位址如何傳遞

先說一次傳遞乙個函式的: 我們先定義乙個函式 

double add(double x, double y)

然後接著建立乙個函式指標 double (*pf)(double,double)=add;  //這裡(*pf)的括號不能省,不然就不是函式指標了

我們現在有乙個函式:

double calculate(double x1, double y1, double(*f)(double, double))  //函式呼叫裡面傳遞 函式指標陣列 的方法

然後我們來進行值傳遞

int x = 2; y = 1;

calculate(x, y, pf);

最後可以得到輸出的結果是 2+1=3。

這是最基本的,下面講我要說的重點,就是一次傳遞多個函式進去。

想傳遞多個函式進去,我們要建立乙個函式陣列 。先定義兩個函式:

double add(double x, double y)

double add2(double x, double y)

然後建立函式陣列並賦值  double (*pf[2])(double,double) = ; 

接著傳遞給上面定義的calculate函式。呼叫方式為:calculate(x, y, pf);

calculate函式的接收方式應為:double calculate(double x1, double y1, double(**f)(double, double)) //傳遞的pf是乙個陣列的陣列名且本身也是乙個指標,即為二重指標     或者double calculate(double x1, double y1, double(*f)(double, double))

最後給出完整的**

#include "iostream"

using namespace std;

double add(double, double);

double add2(double x, double y);

double calculate(double x1, double y1, double(**f)(double, double))  //函式呼叫裡面傳遞 函式指標陣列 的方法

int main()

; x = 2; y = 1;

calculate(x, y, pf);

system("pause()");

return 0;

}double add(double x, double y)

double add2(double x, double y)

例子:#include "stdio.h"

#include "string.h"

typedef int (*p)(int);

void function(p input);

int input(int a);

int main()

void function(p input)

int input(int a)

typedef int (*p) (int *p);的說明:

定義乙個函式指標型別

(注意是型別)

p,指向乙個函式,該函式接受乙個引數int *型,返回int。

也就是說,有這樣的定義:

typedef int (*p) (int *p);

int foot(int *); //宣告,foot在其它地方定義

可以這樣使用:

p pf = foot; //&foot也可以,乙個意思

C語言再學習之 函式名作為函式的輸入引數

question 在函式void function 中,需要將另外乙個函式double input 的函式名作為輸入引數。定義函式指標 typedef double p int note 紅色字型部分需要注意,函式input 所有的輸入引數型別都需要包含在內。例如 double input doub...

c 函式指標 將函式名作為引數傳遞給函式

c 把函式a作為引數傳遞給另外函式b時,實際上是把函式a作為指標傳遞給另外的函式b,這就涉及到了函式指標。函式指標宣告如下 return type p name arg list 表示返回值為return type,引數列表為arg list的函式指標p name.例如 定義乙個函式 intadd ...

python 函式名作為字典值進行呼叫

列舉函式enumerate 判斷型別的內建函式 哇哦,第一次寫部落格誒!跟anaconda notebook 好像呀 通過字典的方法對函式進行呼叫,有些類似於switch方法 可以通過輸入key,呼叫需要的函式 defa print aa defb print bb dic 呼叫函式a dic 1 ...