函数指针和指针函数
- 函数指针和指针函数
- 指向函数的指针
- 返回指针值的函数
- 指针函数和函数指针的区别
- 问题1_1
- 代码1_1
- 结果1_1
函数指针和指针函数
指向函数的指针
用函数指针变量调用函数
可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数的入口地址就称为函数的指针。
函数指针变量常用的用途之一是把指针作为参数传递到其他函数。
类型名
(
∗
函数名
)
(参数表列)
;
类型名 (*函数名)(参数表列);
类型名(∗函数名)(参数表列);
例如:
i
n
t
(
∗
a
)
(
i
n
t
x
,
i
n
t
y
)
;
int\ (*\ a)(int\ x, int\ y);
int (∗ a)(int x,int y);
返回指针值的函数
一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。其概念与以前类似,只是带回的值的类型是指针类型而已。这种带回指针值的函数,一般定义形式为:
类型名
∗
函数名(参数表列)
;
类型名 *函数名(参数表列);
类型名∗函数名(参数表列);
例如:
i
n
t
∗
a
(
i
n
t
x
,
i
n
t
y
)
;
int\ *\ a(int\ x, int\ y);
int ∗ a(int x,int y);
指针函数和函数指针的区别
这两个概念都是简称:
指针函数是指带指针的函数,即本质是一个函数。
函数指针是指向函数的指针变量,因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。
问题1_1
函数 f u n fun fun的功能是:用函数指针指向要调用的函数,并进行调用。
代码1_1
#include<stdio.h>
double f1(double x){
return x*x;
}
double f2(double x, double y){
return x*y;
}
double fun(double a, double b){
double (*f)();
double r1, r2;
f = f1;
r1 = f(a);
f = f2;
r2 = (*f)(a, b);
return r1+r2;
}
void main(void){
double x1=5, x2=3, r;
r = fun(x1, x2);
printf("\nx1 = %f, x2 = %f, x1*x1 + x1*x2 = %f\n", x1, x2, r);
}