C函数指针简单用例
(1)函数指针:
可以指向 一类 固定形参类型和返回值类型 的函数 的指针
声明:
int fun(int, int)
||
\/
int (*pfun)(int, int)
pfun就是函数指针(变量)
调用:
d = pfun(a, b);
e = (*pfun)(a, b);
#####指针函数
int *fun(int, int);
int *(fun(int, int));
#####
/*ex01.c*/
#include <stdio.h>
int max(int a, int b) {
return (a > b ? a : b);
}
int min(int a, int b) {
return (a < b ? a : b);
}
int main(int argc, char *argv[]) {
int (*pfun)(int, int);
pfun = max;
int a = 0, b = 0, c = 0, d = 0, e = 0;
fscanf(stdin, "%d%d", &a, &b);
c = max(a, b);
d = pfun(a, b);
e = (*pfun)(a, b);
fprintf(stdout, "%d\n", c);
fprintf(stdout, "%d\n", d);
fprintf(stdout, "%d\n", e);
return 0;
}
(2)定义函数指针的类型 可以声明函数指针变量
typedef int (*Pfun)(int, int);
Pfun就是自定义函数指针类型
Pfun pfun = min;
创建Pfun类型变量pfun并将min函数赋值它
/*ex02.c*/
#include <stdio.h>
typedef int (*Pfun)(int, int);
int max(int a, int b) {
return (a > b ? a : b);
}
int min(int a, int b) {
return (a < b ? a : b);
}
int main(int argc, char *argv[]) {
Pfun pfun = min;
int a = 0, b = 0, c = 0, d = 0, e = 0;
fscanf(stdin, "%d%d", &a, &b);
c = min(a, b);
d = pfun(a, b);
e = (*pfun)(a, b);
fprintf(stdout, "%d\n", c);
fprintf(stdout, "%d\n", d);
fprintf(stdout, "%d\n", e);
return 0;
}
(3)可以将函数作为参数传入另一函数
#include <stdio.h>
typedef int (*Pfun)(int, int);
int max(int a, int b) {
return (a > b ? a : b);
}
int min(int a, int b) {
return (a < b ? a : b);
}
int dofun(Pfun pfun, int a, int b) { //用Pfun类型的函数指针变量pfun接收传入的函数
return pfun(a, b);
}
int main(int argc, char *argv[]) {
Pfun pfun = min;
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
fscanf(stdin, "%d%d", &a, &b);
c = min(a, b);
d = pfun(a, b);
e = (*pfun)(a, b);
f = dofun(min, a, b); //将min函数作为参数传入dofun,dofun用相应类型的函数指针接收
fprintf(stdout, "%d\n", c);
fprintf(stdout, "%d\n", d);
fprintf(stdout, "%d\n", e);
fprintf(stdout, "%d\n", e);
return 0;
}
C函数指针简单用例的更多相关文章
- c++ 函数指针简单实例
一开始看函数指针的时候我是很懵的,因为不知道它有什么用,之后慢慢就发现了自己的愚昧无知. 假设我们想实现一个数据结构,比如二叉搜索树,堆.又或者是一个快排,归并排序. 我们一般是直接在两个数要比较的时 ...
- 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)
1.函数指针声明的格式及简单的使用 (1)格式:(返回值)(*函数指针名)(参数列表) 例如:声明一个无参数无返回值的函数指针(void)(*p)(void). (2)将函数指针指向某个无参数无 ...
- 成员函数指针与高性能C++委托
1 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值. ...
- [转]成员函数指针与高性能的C++委托
原文(作者:Don Clugston):Member Function Pointers and the Fastest Possible C++ Delegates 译文(作者:周翔): 成员函数指 ...
- C/C++函数指针详解(转)
这两天在研究C/C++的函数指针,找到一篇讲解比较详细的博客,内容有点多,但是讲解得比较详细,适合初学者.特转之: 1. 无处不见的函数指针 使用函数指针可以设计出更优雅的程序,比如设计一个集 ...
- C/C++中的函数指针
C/C++中的函数指针 一.引子 今天无聊刷了leetcode上的一道题,如下: Median is the middle value in an ordered integer list. If t ...
- C++使用简单的函数指针
函数指针: 被调用函数指针必须包括函数的存储器地址,为了正常工作,指针还必须包括其它信息,这一参数列表指针的参数类型和返回类型的函数. 因此,当你声明一个函数指针,数的參数类型和返回类型.以及指针名. ...
- 简单计算器的C实现-函数指针,main函数传参
/** 程序功能:简单计算器,实现加减乘除平方* 作者版本日期:2015.11.08 zhouhb OK* 源代码:李明 <新概念C语言培训>第33集 C语言Shell命令解释器的实现* ...
- Delphi下使用指针的简单总结(指针的赋值,数组和指针的转换,函数指针的使用)
由于最近公司太忙,好久没有更新我的BLOG了.原来想着写写关于HOOK驱动的文章,可是最后想想好久已经没有做驱动的东西了,怕写出来有错误,于是作罢.开发游戏也有一段时间了,发现使用DELPHI来开发网 ...
随机推荐
- Kindeditor上传图片到七牛云存储插件(PHP版)
由于工作需要,要使用第三方存储作为图床,发现七牛云挺不错,又可以免费使用10G的空间,决定先试试. 项目中使用的是Kindeditor作为网页编辑器的,七牛云的插件里没有现成的Kindeditor的插 ...
- Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...
- 给兄弟说下如何处理Debian下常见的apache2的几个问题
这段时间总是有兄弟问到在linux下的apache2配置,其实很简单,这里统一答复下. 一.安装 当然是apt-get install 最简单了, 顺便把php5和GD什么的一起装上吧,基本上不用配置 ...
- jQuery之事件
(一).事件列表. 1.blur() 当失去焦点时触发.包括鼠标点击离开和TAB键离开. 2.change() 当元素获取焦点后,值改变失去焦点事触发. 3.click() 当鼠标单击时触发. 4.d ...
- java数组复制的方式和效率比较
java中,数组的复制有以下三种方式: 1. 调用System.arraycopy(Arrays.copyOfRange可以当作第四种,但是底层调用的是System.arraycopy,所以,认为是同 ...
- HTML5视音频小结
目前,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件.HTML5 规定了一种通过 video 元素来包含视频的标准方法.当前HTML5只支持三种格式的视频. 格 ...
- 导入时如何定制spring-boot依赖项的版本
spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可拿来使用.spring-boot文档介绍了两种使用方法,一是继承,二是导入. 通过<parent>继承: ...
- 《Java web 开发实战经典》读书笔记
去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...
- jquery第二期:三个例子带你走进jquery
jquery是完全支持css的,我们举个例子来看看使用jquery的方便之处,这功劳是属于选择器的: 例1: <!DOCTYPE html PUBLIC "-//W3C//DTD HT ...
- leetcode_question_73 Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow ...