码迷,mamicode.com
首页 > 其他好文 > 详细

函数指针、回调函数、系统调用区别

时间:2016-08-06 09:54:57      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

函数指针、回调函数、系统调用区别
1.函数指针

 1 int add(int a, int b)
 2 {
 3 return a+b;
 4 }
 5 
 6 int (*fp)(int,int);
 7 
 8 int main()
 9 {
10 int c;
11 fp = add; //有指针赋值操作,静态绑定
12 c = fp(2,4);
13 printf("c = %d\n",c);
14 return 0;
15 }

2.回调函数

 1 int add(int a, int b) //回调函数
 2 {
 3 return a+b;
 4 }
 5 
 6 int fun(int a, int b, void(*fp)())//中间函数,动态绑定,与传递的函数名有关
 7 {
 8 return fp(a,b);
 9 }
10 
11 int main()
12 {
13 int c;
14 c = fun(2,4);
15 printf("c = %d\n",c);
16 return 0;
17 }

体现: 1.函数名作为参数传递给调用函数。

    2.将调用者和被调函数分开,回调函数实现具体的功能,调用者无需关注实现的具体细节。

3.系统调用
系统调用 --> (0x80)软中断(系统调用表) --> 内核函数 --> 返回到系统调用层

  read    --> 系统调用号--内核函数入口  --> 实现功能 --> 返回调用结果

实现方式: 通过中断实现,使用寄存器传参

进程经历了从用户态到内核态的切换,处理完成后再恢复到用户态继续完成系统调用的过程。

函数指针、回调函数、系统调用区别

标签:

原文地址:http://www.cnblogs.com/mydmp/p/5743273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!