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 ...