指向函数的指针使用实例(C语言实现)
/作为小白的我第一次写博客,异常激动,会很认真地写了。
我学习C语言一学期,喜欢分享和交流。/
函数由指令序列构成,其代码存储在一片连续的内存单元中,第一个代码所在的内存地址即为首地址,就是函数的入口地址。主函数在调用时,就是转移到子函数的入口地址去执行。
那么指针指向函数,就是指针的值为函数入口地址。注意区分它和指针函数的区别。
格式为:
类型 (*指针变量名)(参数表)
如:int (*func)(int x)
void (*func1)(int x,float *a)
注意,函数指针在使用前必须定义,必须初始化,指向函数的返回值类型和参数列表必须与指针变量定义时的类型一致
#include<stdio.h>
double square(double x); //函数原型
int main(){
double (*p)(double x);
p=square; //用square初始化p
printf("%f,%f,%f",square(1.6),p(1.6),(*p)(1.6));
}
double square(double x){
return(x*x);
}
运行后,发现p(1.6),(*p)(1.6)的结果一致,这是因为编译时自动对其处理,类似于数组。
函数指针本身也可作为其他函数的参数,比如说你要对各种排序算法的性能进行比较,用代码实现排序后,比较笨的方法是自己手动测试,收集数据。这是俺大一时老师布置的一项大作业,类似于美国大学中的project,有人真的就自己手动测试(太笨了,hahahahahah)