函数指针和回调函数

简介:

一.函数指针:

(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,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
Unix
网络编程之 信号捕捉器(函数指针与回调函数)(2)
sigaction()函数 前面我们讲到的内容已经足以用来防止僵尸进程生成的代码。之所以博主还要介绍sigaction()函数是因为它类似于signal()函数,而且完全可以代替后者,也更稳定(主要是书上介绍到了
31 1
|
3月前
|
Linux
网络编程之 信号捕捉器(函数指针与回调函数)(1)
接着我们的信号说下去 之前博主给大家分享到了信号的概念和初步介绍signal函数的形式后就没有继续往下介绍了,实在是因为时间不够,那个时候博主还要上课,现在博主放假了就好好给大家分享一下如何注册信号捕捉,以及信号捕捉器的妙用。
34 1
|
6月前
【C进阶】回调函数(指针进阶2,详解,小白必看)(中)
【C进阶】回调函数(指针进阶2,详解,小白必看)(中)
|
6月前
|
存储
【C进阶】回调函数(指针进阶2,详解,小白必看)(上)
【C进阶】回调函数(指针进阶2,详解,小白必看)(上)
|
6月前
|
C语言
通过模拟实现计算器介绍函数指针数组和回调函数的用法【C语言/指针/进阶】
通过模拟实现计算器介绍函数指针数组和回调函数的用法【C语言/指针/进阶】
45 0
|
6月前
|
小程序 算法
如何降低代码的冗余度(指针的妙用)——探索指针数组,数组指针,函数指针,函数指针数组,回调函数的奥妙
如何降低代码的冗余度(指针的妙用)——探索指针数组,数组指针,函数指针,函数指针数组,回调函数的奥妙
32 0
|
6月前
|
搜索推荐 程序员 编译器
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
40 0
|
1月前
|
存储 C语言
c语言函数指针和指针函数的区别,以及回调函数的使用。
c语言函数指针和指针函数的区别,以及回调函数的使用。
9 0
|
1月前
|
存储 程序员 API
C函数指针与回调函数
C函数指针与回调函数
25 0
|
2月前
|
C语言 C++
C语言之指针进阶篇_回调函数(3)
C语言之指针进阶篇_回调函数(3)
22 0