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

函数指针小记

时间:2016-04-13 22:18:29      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

  与一般的数据一样,函数在内存中也占有一定空间,所以函数也有“地址”的概念,函数指针就是指向这个“地址”(即函数代码块的起始地址),函数指针的type就是函数本身。知道了地址,我们很轻松的就能靠函数指针来完成函数调用。

1、简单函数指针:

1void add(int a, int b){  //这里写了一个很简单的函数
2     cout << a + b << endl;
3 }    
1 void (*p1)(int a, int b);  //声明一个函数指针,指向的函数类型为“返回void,两个int参数”的函数
2 p1 = add;            //赋值
3 //void (*p1)(int a, int b) = add;    //也可以这样赋值,一个意思
4 (*p1)(1, 2);          //这里是两种调用方法,出于某历史原因,这两者是等价的= =
5 p1(1, 2);

 

2、包含多个函数指针的数组:

1 void (*p2[2])(int a, int b);  //声明
2 p2[1] = add;            //赋值
3 p2[1](2,3);            //调用,同样两种方法都可以
4 (*p2[1])(3,4);

 

3、指向包含多个函数指针数组的指针:
稍微有一点点拗口,这个指针指向的是上一点中“包含多个函数指针的数组”。

1 void (*(*p3)[2])(int a, int b);  //无非就是将p2用*p3代替
2 p3 = &p2;              //指针赋值前必须要初始化
3 (*p3)[1] = add;
4 (*p3)[1](1, 2);          //调用
5 ((*p3)[1])(1, 2);

c++11可以很简单的这样直接定义:auto p3 = &p2; 代替了void (*(*p3)[2])(int a, int b)= &p2;

函数指针小记

标签:

原文地址:http://www.cnblogs.com/decade-dnbc66/p/5388995.html

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