1.函数指针:指向函数的指针变量.

                函数在内存中也是有地址的,函数名代表函数的内存地址.

   例子:函数:int sum(int a,int b);

     int sum(int a,int b){

        return a+b;

      }

      函数名+形参  就是函数

     函数指针: 函数指针定义:int(*p)(int a,int b);

     技巧,赋值函数声明int sum(int a,int b),将sum括起来加个*号,将sum改个名字,就定义了一个函数指针,p就是变         量,p = sum;int x = sum(2,3); int x = p(2,3);等价

2. 函数指针剖析

    int(p*)(int a,int b) = NULL;

    类型: int(*)(int a,int b) 

    变量名: p

    初值: NULL

3. p = sum;

    p = naxValue;

    p可以指向任何一个函数;

4. typedef int (*PFUN)(int,int);

    相当于把int(*)(int a,int b)改成了PFUN;

    PFUN p = NULL;

     P = sum;

    给函数指针赋值,必须与定义的类型一致.此时p的类型是int

5. 回调函数

    callback

    函数回调核心就是把函数作为形参;

例子:int  maxValue(int x,int y){

       return a > b ? a : b;

     }

      int getValue(int x, int y){

     return sum(x,y);// 此时getValue是求和;调用时 int a = getValue(2,4);

     或者 return maxValue(x,y);// 此时getValue是求最大值;调用时 int a = getValue(2,4);

      使用哪个就得改getValue函数的内部实现,不灵活,比较麻烦!!!!

   }

   int getValue(int x, int y,PFUN p){(PFUN p代表返回值是整形的函数指针)

     return p(x, y);

    }

   int a = getValue(2,4,maxValue);

   int b = getValue(2,4,sum);

   两种的实现,getValue一点都没变,只是传参数的值.还可以添加其它函数,p随意指,很方便.

   比如迅雷公司,此时getValue是核心的代码,是知识产权,不会让程序员修改,升级时只是添加函数,然后主函数调用就可     以了

 

C语言 --- 函数指针(初级)的更多相关文章

  1. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  2. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  3. “对外部(局部)变量的访问”是C语言函数指针的最大弱点

    1.“对外部(局部)变量的访问”是C语言函数指针的最大弱点 . #include <stdio.h> #include <stdlib.h> /* 结构体定义 */ struc ...

  4. C语言函数指针 和 OC-Block

    C语言函数指针 和 OC-Block 一. C语言函数指针 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037 ...

  5. C语言函数指针实验

    上次看Atmel的示例工程,发现人家使用了函数指针的结构体(函数指针结构体).感叹人家的C语言功夫审核,自己费劲还是只能读懂的份.不过,函数指针确实好用.今天就试试这个超牛的东西.Now let's ...

  6. C语言函数指针的用法

    函数指针是一种在C.C++.D语言.其他类 C 语言和Fortran 2003中的指针.函数指针可以像一般函数一样,用于调用函数.传递参数.在如 C 这样的语言中,通过提供一个简单的选取.执行函数的方 ...

  7. c语言函数指针的理解与使用

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun ...

  8. C语言函数指针(转载)

    二.通常的函数调用 一个通常的函数调用的例子:/* 自行包含头文件 */void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */int main(int a ...

  9. C语言函数指针变量和指针函数以及指针数组

    C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...

随机推荐

  1. List集合的方法总结

    1. 添加方法 boolean add(E e): 向集合的末尾添加指定的元素 boolean addAll(Collection<? extends E> c): 向集合的末尾添加一个指 ...

  2. 使用keil生成bin文件

      相关文件  下载http://pan.baidu.com/share/link?shareid=478269&uk=1107426113 使用kei自带的工具的话是 打开Options f ...

  3. 本机向window服务器传送数据

    我们需要在远程服务器中安装 FileZilla_Server,在本机安装 FileZilla 客户端 FileZilla 服务器下载地址:https://pan.baidu.com/s/1o7Aen2 ...

  4. python学习之路(6)

    使用dict和set Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根 ...

  5. Vue一个案例引发的动态组件与全局事件绑定总结

    最近在自学 Vue 也了解了一些基本用法,也记录了一些笔记有兴趣的朋友可以去查看我的其他文章,技术这东西真的不能光靠看,看是没有的,你必须要动手实践,只有在实战项目中才能发现问题,才能发现我们没有掌握 ...

  6. Running .sh scripts in Git bash

    Running .sh scripts in Git bash Let's say you have a script script.sh. To run it (using Git Bash), y ...

  7. shell脚本之awk、sed、grep案例

    1.BEGIN END用法user        DIR,内容显示用户名称.用户家目录   $NF为awk的内置变量,表示最后一行,$(NF-1)就表示倒数第二行,最后打印页脚 页眉显示 cat /e ...

  8. leetcode-easy-math-204 Count Primes-NO

    mycode     time limited class Solution(object): def countPrimes(self, n): """ :type n ...

  9. CountDownLatch用法实践

    项目中写多线程时,需要判断所有线程是否执行完毕,所以想到了添加累加器来判断.这个累加器使用什么变量,找到了以下2种方式. 1. 类似AtomicInteger这种提供原子操作的类型AtomicInte ...

  10. 浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象

    ylbtech-浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象 1.返回顶部 1. HTML DOM Event 对象 实例 哪个鼠标按钮被点击 ...