c/c++函数指针

来源:互联网 发布:变形金刚弹簧淘宝 编辑:程序博客网 时间:2024/06/07 19:48

我们已知在c/c++中,指针用来指向变量的内存地址。还有一种特殊的指针 —— 函数指针,他指向的是函数的内存地址。

1.函数指针的定义方式:

函数指针定义方式必须与其要指向的函数定义形式相同,也就是说返回值、参数表和类型必须相同并且函数名前面必须加上 * 号并用小括号括起来, 如下;

<cpp>#include "stdafx.h"//定义一个函数say,打印输出。void say(){    printf("hello world");}//定义一个指向函数say的函数指针void (* p)();int main(){    p = say;    p();    return 0;}</cpp>

out: hello world;

2.练习:使用函数指针制作菜单管理器 (c++实战099)
#include "stdafx.h"struct MENU{char * name;//菜单名void (*func)();//执行菜单操作}void FileFunc(){printf("执行文件菜单");}void EditFunc(){printf("执行编辑菜单");   } void ViewFunc(){printf("执行视图菜单");}int main(){int code = -1;MENU menu[] = {{"<1>文件菜单",FileFunc},{"<2>编辑菜单", EditFunc},{"<3>视图菜单",ViewFunc}};for(int i = 0;i < 3;i++){printf("%s",menu[i].name);}printf("请选择编号执行菜单操作:\n");scanf("%d",&code)if(code != -1 && code < (sizeof(menu)/sizeof(menu[0]))){menu[code-1].func();}return 0;}

运行结果如下图所示:

这里写图片描述