欢迎访问我的新博客: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

指向函数的指针 - C语言相关推荐

  1. 指向函数的指针--转

    http://book.51cto.com/art/200908/146363.htm 5.1.2 指向函数的指针 C语言通过&和*操作符来操作数据的地址,但它并没有提供一个用一般的方式来操作 ...

  2. C语言学习笔记---指向函数的指针

      在内存中函数的存放也是一段连续的内存,函数名就是指向改内存中的首地址,所以也可以将这个函数的首地址赋给一个指针变量,这样通过指针变量就可以访问改函数.   那么为什么要通过指针来访问函数呢?下面通 ...

  3. c语言handler指针,typedef与指向函数的指针结合的妙用

    今天看到keil的一个例子,里面涉及到利用typedef和指向函数的指针结合的例子,使得程序结构体系非常明了,觉得很好,特地记下来. 首先在头文件定义了这个指针,并用typedef将其声明为一个类型: ...

  4. C语言 指向函数的指针

    C语言程序在编译后,每个函数都有一个首地址(也就是函数第一条指令的地址),这个地址称为函数的指针.可以定义指向函数的指针变量,使用指针变量间接调用函数. 先用一个简单的程序来说明: #include ...

  5. 【C语言】函数指针(指向函数的指针)

    文章目录 1. 函数指针的定义 2. 函数指针的定义形式 2.1 一般定义方法 2.2 加上typedef关键字的定义 3.利用函数指针调用其所指向的函数 3.1 情况1:一般调用 3.2 情况2:函 ...

  6. c语言指针怎么指向函数,C语言指针---指向函数的指针

    C语言指针-指向函数的指针 1.什么是函数指针 在程序中定义了一个函数,在编译时,系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针. 一般形式: 类型名 (*指 ...

  7. ios 调用c语言函数指针,第09天C语言(08):指向函数的指针的应用场景

    #pragma mark 指向函数的指针的应用场景 ###pragma mark 概念 ###pragma mark 代码 #include int sum(int v1,int v2) { retu ...

  8. C语言中指向函数的指针(我见过的讲的最清晰的文章)

    转帖自: http://wenku.baidu.com/view/7e566448cf84b9d528ea7a57.html 1 定义和调用 程序在编译后,每个函数都有一个首地址(也就是函数第一条指令 ...

  9. 20返回指针的函数与指向函数的指针

    一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回指针的函数的一般形式为:类型名 * 函数名(参数列表) 比如下面这个函数,返回一个指向char类型变 ...

最新文章

  1. python 搭建ftp服务器
  2. 关闭socket以及Socket选项
  3. NAND FLASH ECC
  4. 参数化测试 junit_JUnit中的参数化测试运行器
  5. PHP base64数据与图片的互相转换
  6. 【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)
  7. doe报告模板_【质量管理小组QCC活动】报告模板
  8. System.arraycopy详解
  9. Python来处理数独游戏(含世界最难数独示例)
  10. 每天固定往一个银行卡存入100元,5年之后会有多大变化?有人能坚持吗?
  11. 今年最值得期待的JavaScript传奇绿皮书登场!
  12. 在更新.net 4.5补丁后,VS2012突然不能打开项目,卸载补丁之后解决。
  13. JAVA网站后台管理系统
  14. 浙江新曙光建设_中习集团大厦项目工地与姜太公签约,正在使用太公管工进行实名制考勤...
  15. wifi无线破解记录
  16. 祖籍-山西省洪洞县大槐庄
  17. pdo mysql 函数_PDO函数属性详解
  18. 怎么修改电脑或者Apple手机、iPad等设备上图标的大小
  19. PHP 7.2禁止类名为Object的巨坑
  20. Docker Hub + Github 自动化构建docker镜像

热门文章

  1. STL之deque和其他容器
  2. 区块链技术怎么构架落地应用?
  3. 在线代码编辑器 Codemirror 的轻量级 React 组件
  4. linux禁止ping
  5. 压缩感知先进——关于稀疏矩阵
  6. 从CentOS6.0i386到CentOS6.6x86-64,搬家中,磕磕跘跘,各种折腾……
  7. 烂泥:利用Diskgen找回分区破坏前的资料
  8. js和jquery书籍
  9. 晚上不睡觉,搞的一个例子《JS实现动画》
  10. jackson/fastJson boolean类型问题