函数指针和回调函数

简介:

一.函数指针:

(1).描述:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的 物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在代码段中的,它们同样有地址,因此同样可以用指针来 存取函数,把这种指向函数入口地址的指针称为函数指针。

PS:函数指针不能进行++或--操作。


(2).声明方法:

返回值类型 (*指针变量名)([形参列表])

返回值类型:声明函数的返回值类型。

指针变量名:和普通指针声明一样,可以随意声明变量名。(PS:括号不能忽略了,如果忽略则变成一个普通的函数声明,返回的数据类型是指针的函数)

形参列表:指针变量所指向的函数的形参列表。(必须和所指向的函数的形参列表一样)


例如:

int func(int x);   //声明一个函数

int (*f)(int );    //声明一个函数指针

f = func;              //把func函数的首地址赋给函数指针f

或者  f = &func   //把func函数地址赋给函数指针f



不过上面的例子在某些编译器上是通不过的,可以用下面的例子:

int func(int x);   //声明一个函数

typedef int (*f)(int );    //声明一个函数指针类型

f func1 = func;              //把func函数的首地址赋给函数指针变量func1

func1(2);                   //调用函数func


PS:指针函数是指函数的返回值是一个指针的函数,其本质是一个函数。




二.回调函数:

描述:自己定义一个函数,函数的内容自己实现,然后把这个函数作为一个参数传给另一个(系统)的函数,由另一个 (系统)的函数运行时调用这个函数。


例如:

void print(char *s)

{

    printf("%s\n", s);

}


void P(void (*func)(char* s), char *s)

{

    (*func)(s);

}


int main()

{

    char* s = "Make world better";

    P(print, s);

}











本文转自 ye小灰灰  51CTO博客,原文链接:http://blog.51cto.com/10704527/1769841,如需转载请自行联系原作者
目录
相关文章
|
Unix
网络编程之 信号捕捉器(函数指针与回调函数)(2)
sigaction()函数 前面我们讲到的内容已经足以用来防止僵尸进程生成的代码。之所以博主还要介绍sigaction()函数是因为它类似于signal()函数,而且完全可以代替后者,也更稳定(主要是书上介绍到了
241 1
|
Linux
网络编程之 信号捕捉器(函数指针与回调函数)(1)
接着我们的信号说下去 之前博主给大家分享到了信号的概念和初步介绍signal函数的形式后就没有继续往下介绍了,实在是因为时间不够,那个时候博主还要上课,现在博主放假了就好好给大家分享一下如何注册信号捕捉,以及信号捕捉器的妙用。
252 1
指针(5)---回调函数
指针(5)---回调函数
183 0
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
262 0
|
C++
指针中的回调函数与qsort的深度理解与模拟
本文详细介绍了回调函数的概念及其在计算器简化中的应用,以及C++标准库函数qsort的原理和使用示例,包括冒泡排序的模拟实现。
219 1
魔法指针 之 函数指针 回调函数
魔法指针 之 函数指针 回调函数
161 0
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
算法 搜索推荐 C语言
c函数指针与回调函数
c函数指针与回调函数
279 2
|
算法 搜索推荐 程序员
C语言中的函数指针和回调函数
C语言中的函数指针和回调函数
300 2
|
存储 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(中)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
231 0