C语言指针的函数引用用法,c语言函数指针的几种用法(5页)-原创力文档

本文通过详细介绍C语言中函数指针的两种核心用法——作为参数传递和作为返回值,展示了如何利用函数指针实现灵活的函数调用。包括了函数指针的声明、定义以及实际应用场景中的calculator和GetOperation函数。适合初学者理解指针在程序设计中的重要作用。
摘要由CSDN通过智能技术生成

C语言函数指针的几种用法

Free_Bird主要参考了:/space.php?uid=9950859&do=blog&id=98594

写的很好;在此感谢高手们的无私;

以下是我编写的一段程序,希望能帮到需要的xdjm;

程序如下:

#include

#include

/*--指针的应用都在主函数里,前面都是准备工作--*/

/*----------------------------------------------------------*/版权文档,请勿用做商业用途

/*------简单应用指针的前期准备------*/

/*----------------------------------------------------------*/版权文档,请勿用做商业用途

//声明并定义 一个变量、一个数组 和 一个函数

double R = 0;

unsigned char Temp[10] = {9,8,7,6,5,4,3,2,1,0};

void delay_ms(unsigned int n)

{

unsigned int i,j;

for(i = 0; i< n ; i++)

{

for(j = 0; j < 2280; j++);

}

}

//声明一个指向无符号字符型的指针 和 一个函数指针

unsigned char *pT;

void (*pF)(unsigned int n);

/*----------------------------------------------------------*/版权文档,请勿用做商业用途

/*------应用函数指针的前期准备------*/

/*----------------------------------------------------------*/版权文档,请勿用做商业用途

/*------相关函数的声明和定义------*/

int add(int a, int b){int sum; sum = a + b; return sum;}版权文档,请勿用做商业用途

int sub(int a, int b){int difference; difference = a - b; return difference;}版权文档,请勿用做商业用途

int mul(int a, int b){int product; product = a * b; return product;}版权文档,请勿用做商业用途

int div(int a, int b){int division; division = a / b; return division;}版权文档,请勿用做商业用途

int UnKnown(int a,int b){return 0;}

/*------函数指针的第一种用法:作为其他函数的参数------*/

//关于下面这个函数的理解:首先分析这个函数的参数,前两个参数是整形,

// 第三个参数是一个函数指针,既然是函数指针,

// 那么给第三个参数赋值时,

// 就应该是函数的入口地址,即 函数名;

// 调用时:calculator(5,9,mul);

//

//函数的声明和定义

double calculator1(int x, int y, int (*pfunc)(int, int)) 版权文档,请勿用做商业用途

{

double result;

result = (*pfunc)(x, y);

return result;

}

/*------函数指针的第二种用法:作为函数的返回值------*/

//直接声明和定义(思路不清晰,不推荐)

int (*GetOperation1(unsigned char c))(int a,int b)

{

switch (c)

{

case 'a':

return add;

case 's':

return sub;

case 'm':

return mul;

case 'd':

return div;

default:

return UnKnown;

}

}

//标准做法(思路清晰,推荐)

//将PF转意声明成一个指向int add(int a, int b)型函数的函数指针类型

typedef int (*PF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值