指向函数的指针使用实例(C语言实现)

本文介绍了C语言中指向函数的指针的使用,包括定义、初始化和作为参数传递。通过实例展示了如何利用函数指针比较不同排序算法的性能,强调了参数类型的一致性以及在实际应用中的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指向函数的指针使用实例(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)。其实可以这么做。具体的排序算法的实现我就不贴出来了。(建议先跳过下面这个代码片段,回过头再看)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>     
#include<string.h>
#define LEN (N*sizeof(float))
#define CREATE(PP)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值