27.函数的指针

复制代码
#include <stdio.h>

//定义一个参数类型为 函数指针的函数
int calc(int x, int y, int (*pt)(int, int) ); 

int add(int,int);
int sub(int,int);

int getSum(int,int);
int getGap(int,int);

int main(void)
{

//定义一个函数指针(2要素:参数、返回值)
int (*pt)(int,int);

//为函数指针赋值
pt = getSum;

//用函数名调用函数
printf("用函数名调用函数:%d\n", getSum(9,1) );

//用函数指针调用函数1
printf("用函数指针调用函数:%d\n", pt(9,2) );

//用函数指针调用函数2
printf("用函数指针调用函数:%d\n", (*pt)(9,3) );

pt=getGap;

printf("求Gap:%d\n", (*pt)(9,3) );

printf("%p=====%p\n", pt, getGap);


//调用函数的实参为函数指针
printf("add:%d   sub:%d \n", calc(2, 3, &add) ,calc(2, 3, sub)  );
  
return 0;
}


//实现一个参数类型为 函数指针的函数
int calc(int x, int y, int (*pt)(int x, int y) )
{
    return (*pt)(x,y);
}


int add(int a,int b)
{
  return a + b;
}
int sub(int x,int y)
{
  return x * y;
}

int getSum(int x,int y)
{
  return x + y;
}

int getGap(int x,int y)
{
  return x - y;
}
复制代码

 

posted @   学而不思则罔!  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示