函数的指针和指向函数的指针变量

一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。

函数名代表函数的入口地址,这一点和数组一样。我们可以用一个指针变量来存放这个入口地址,然后通过该指针变量调用函数。如:假设有一个求两者较大的函数如下:

int max(int x, int y);


当我们调用这个函数时可以这样:
int c;
c max(a,b);

这是通常调用方法,其实我们可以定义一个函数指针,通过指针来调用,如:

int (*p)(a,b);
有些朋友可能对(*p)()不大理解,其实它的意思就是定义一个指向函数的指针变量p,p不是固定指向哪个函数的,而是专门用来存放函数入口地址的变量。在程序中把哪个函数入口地址赋给它,它就指向哪个函数。但是注意,p不能像指向变量的指针变量一样进行p++p--等无意义的操作。
既然p是一个指针变量,那么久可以作为函数的参数进行传递。其实函数的指针变量最常用的用途之一就是作为函数参数传递到其它函数。这也是c语言中应用的比较深入的部分了。

猜你喜欢

转载自blog.csdn.net/faihung/article/details/80329925