指向函数的指针 - C语言

欢迎访问我的新博客:http://www.milkcu.com/blog/

原文地址:http://www.milkcu.com/blog/archives/1368947400.html

基本概念

在C语言中,函数本身不是变量,但可以定义指向函数的指针。这种类型的指针可以被赋值、存放在数组中、传递给函数以及作为函数的返回值等等。

函数作为参数传递给函数时,因为它们是函数,前面不需要加取地址运算符&。同样的原因,数组名前面也不需要&运算符。

代码实现

测试代码如下:

# include <stdio.h>
int compare(int a, int b);
void hello(int a, int b, int (* compare)(int , int));
int main(void)
{int a, b;a = 3;b = 3;hello(a, b, * compare);
}
int compare(int a, int b)
{return a == b;
}
void hello(int a, int b, int (* compare)(int, int))
{if((* compare)(a, b)) {printf("Hello.\n");}
}

分析:

hello函数的第三个参数声明如下:

int (* compare)(int , int)

它表明compare是一个指向函数的指针,该函数有两个int类型的参数,其返回值类型为int。

在下列语句中:

if((* compare)(a, b))

compare的使用与其声明是一致的,同时要注意运算符的优先级

参考资料

  • 《C程序设计语言》,Kernighan著,徐宝文译,第二版:Page118

(全文完)

转载于:https://www.cnblogs.com/milkcu/archive/2013/05/19/3808891.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的创建对象

创建对象 python中&#xff0c;可以根据已经定义的类去创建出一个个对象 创建对象的格式为: 对象名 类名() # 定义类 class Car&#xff08;object&#xff09;: # 移动 def move(self): print(车在奔跑...) # 鸣笛 def toot(self): …

计算机专业配置笔记本,学计算机专业的买什么样配置和价格的笔记本好?

学计算机专业的买什么样配置和价格的笔记本好&#xff1f;答案:5 信息版本&#xff1a;手机版解决时间 2021-05-10 08:17已解决2021-05-10 03:07学计算机专业的买什么样配置和价格的笔记本好&#xff1f;最佳答案2021-05-10 03:58二代i3 1G独显 2G内存 500G硬盘全部回答1楼202…

LeetCode 737. 句子相似性 II(并查集)

文章目录1. 题目2. 解题1. 题目 给定两个句子 words1, words2 &#xff08;每个用字符串数组表示&#xff09;&#xff0c;和一个相似单词对的列表 pairs &#xff0c;判断是否两个句子是相似的。 例如&#xff0c;当相似单词对是 pairs [["great", "fine&qu…

python中的_init_的使用

1. __init__方法 想一想:有没有办法能够在创建对象的时候&#xff0c;就顺便把车这个对象的属性给设置呢&#xff1f; 答:__init__()方法 使用方式&#xff1a; def 类名&#xff08;object&#xff09;: #初始化函数&#xff0c;用来完成一些默认的设定 def __in…

深入 JavaScript(4) - new运算符是如何工作的

接着上篇(//www.cnblogs.com/patrick-holynova/archive/2013/05/14/3077295.html), 来谈谈在OOP中重要的new运算. JavaScript 不像高级语言C, Java等本身就提供了对类的支持, 那么在Js中如何实现类, 类的实例? 对象字面量用构造器创建对象字面量, 例: Detail {game: World of…

计算机硬盘怎么设置ntfs,每次设置系统后,能否更改计算机硬盘分区的fat32和ntfs格式?...

f3622635硬盘的格式转换一个&#xff0c;FAT32到NTFS在“运行”中输入“ CMD”以打开“命令提示符”窗口&#xff0c;输入: “ CONVERT F: / FS: NTFS”&#xff0c;其中“ F: ”是分区驱动器号(带冒号)&#xff0c;“ / FS: NTFS“是将指定的分区转换为NTFS格式.我认为它会很快…

python中_str_使用方法

定义__str__()方法: class Car: def __init__(self, newWheelNum, newColor): self.wheelNum newWheelNum self.color newColor def __str__(self): msg "嘿。。。我的颜色是" self.color "我有" int(self.wh…

LeetCode 708. 循环有序列表的插入

文章目录1. 题目2. 解题1. 题目 给定循环升序列表中的一个点&#xff0c;写一个函数向这个列表中插入一个新元素&#xff0c;使这个列表仍然是循环升序的。 给定的可以是这个列表中任意一个顶点的指针&#xff0c;并不一定是这个列表中最小元素的指针。 如果有多个满足条件的…

VMWare serve 2.0 进入 RHEL Linux rescue模式

可能由于我的鼠标点击速度比较慢所以一直没机会在 VMware Serve启动的时候按F2进入bios 模式&#xff0c;哈哈。 1.在次用另外一种方式&#xff1a; 2.进入bios 系统后&#xff0c;选择“boot”&#xff0c;再选"CD/ROM"&#xff0c;上移到第一位。 3.在boot:后面输入…

计算机主页被篡改这是来自互联网的风险,IE主页为2345.com无法修改回来的解决方法...

X〒ⅠⅡⅢⅣφ〃IE主页为2345.com无法修改回来的解决方法近期,接到不少网友反馈,主页被改为2345.com了,改不回来,请问有何好的解决方法,现特地总结了些资料如下,供大家参考:1、IE默认连接首页被修改受到更改的注册表项目为&#xff1a;HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft…

LeetCode 755. 倒水(模拟)

文章目录1. 题目2. 解题1. 题目 给出一个地形高度图&#xff0c; heights[i] 表示该索引处的高度。 每个索引的宽度为 1。在 V 个单位的水落在索引 K 处以后&#xff0c;每个索引位置有多少水&#xff1f; 水最先会在索引 K 处下降并且落在该索引位置的最高地形或水面之上。然…

python中的self含义及使用方法

self # 定义一个类 class Animal: # 方法 def __init__(self, name): self.name name def printName(self): print(名字为:%s%self.name) # 定义一个函数 def myPrint(animal): animal.printName() dog1 Animal(西西) myPrint(…

Galaxy s4怎么安装一个预装软件的签名不一致的新版本

公司新买一台galaxy s4&#xff0c;要测试一个软件。但是该软件在s4上面已经有预装版本了&#xff0c;无法安装。 用了下列方法才安装成功&#xff1a; 1. 请卖手机的帮忙获得root权限。 2. 检查s4是否已经root, 在手机上安装360安全卫士。然里面有工具->一键root&#xff0…

win10计算机修改底色,win10电脑如何修改登陆背景

win10中如何修改登陆时的背景图片&#xff1f;在win10中登陆界面的图片总是只有那几个背景图片&#xff0c;那登陆界面的背景图片能够更换么&#xff0c;答案是肯定的&#xff0c;下面小编就详细的给大家介绍一下背景更换的问题&#xff0c;希望能够帮助到大家。win10中更换登陆…

LeetCode 444. 序列重建(拓扑排序)

文章目录1. 题目2. 解题1. 题目 验证原始的序列 org 是否可以从序列集 seqs 中唯一地重建。 序列 org 是 1 到 n 整数的排列&#xff0c;其中 1 ≤ n ≤ 104。 重建是指在序列集 seqs 中构建最短的公共超序列。&#xff08;即使得所有 seqs 中的序列都是该最短序列的子序列&am…

python中的保护对象数据

保护对象数据 查看过着修改对象的属性&#xff08;数据&#xff09;&#xff0c;有2种方法。 直接通过对象名修改 通过方法间接修改 Python中没有像C中public和private这些关键字来区别公有属性和私有属性。它是以属性命名方式来区分&#xff0c;如果在属性名前面加了2个下划…

Highcharts 本地导出图片 Java

下载的 Highcharts-2.3.5.zip 解压后 有 E:\Highcharts\Highcharts-2.3.5\exporting-server\java 目录 提供了Java实现的导出应用。 1&#xff09;安装maven&#xff0c;配置环境变量. &#xff08;http://maven.apache.org/download.cgi&#xff09; 1.jdk 我装的是E:\java\j…

华硕主板如何用u盘启动计算机,华硕主板怎么设置u盘启动都有哪些方法

随着互联网的不断发展&#xff0c;现在使用电脑的机会越来越多了。但是机器难免出故障&#xff0c;或者对于新的电脑需要设置启动。那么华硕主板怎么设置u盘启动。下面由一键工作室介绍一下。华硕主板怎么设置u盘启动华硕主板怎么设置u盘启动 华硕主板设置u盘启动方法1、首先&a…

LeetCode 353. 贪吃蛇(deque+set)

文章目录1. 题目2. 解题1. 题目 请你设计一个 贪吃蛇游戏&#xff0c;该游戏将会在一个 屏幕尺寸 宽度 x 高度 的屏幕上运行。 起初时&#xff0c;蛇在左上角的 (0, 0) 位置&#xff0c;身体长度为 1 个单位。 你将会被给出一个 (行, 列) 形式的食物位置序列。当蛇吃到食物…

python中__del__使用方法

创建对象后&#xff0c;python解释器默认调用__init__()方法。当删除一个对象时&#xff0c;python解释器也会默认调用一个方法&#xff0c;这个方法为__del__()方法。在python中&#xff0c;对于开发者来说很少会直接销毁对象(如果需要&#xff0c;应该使用del关键字销毁)。Py…