函数指针和指针函数
- 函数指针和指针函数
- 指向函数的指针
- 返回指针值的函数
- 指针函数和函数指针的区别
- 问题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);
}