今天学习了5.4节函数指针内容,做出如下学习笔记:
1.函数指针与指针函数是两个不同的概念,函数指针是指针变量,指针函数是一个函数,他返回的是一个地址值(因而返回值常定义为int型)。
2.指针函数的表达方式是:
int *f (int a);
函数指针的表达方式为:
int (*f) (int a);
函数指针必须经过声明之后,才可使用,否则会报错。
3.函数指针还可以有以下表达方式:
typedef fun(int);
fun*f;
或:
int (*fun(int)) ();
4.typedef int (*f) (); 声明返回int且无参数的指针类型f。
5.函数类型不能作为参数使用,如果参数中给出了一个函数类型,则自动转换为函数指针,这种想象称之为蜕变(decay)
eg: menfun f [ ]={f1,f2,f3};
正常的应为:
menfun f[] ={&f1, &f2,&f3};
6.也可以使用函数引用:
eg: void a();
typedef void b(); //注意返回类型都为void
b &c=a;
c();
7.函数指针使得C++可以沟通其他语言编写的程序,通过函数指针挂接,方便的将其他语言写的函数和过程引入到C++来。
8.因为函数代码是跨进程的,所以通过函数指针可以越过本地进程,通过动态链接库的方式,访问共享性质的其他进程,执行其函数,甚至操作系统函数。