4.函数的指针和指向函数的指针变量
一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。函数名代表函数的入口地址,这一点和数组一样。我们可以用一个指针变量来存放这个入口地址,然后通过该指针变量调用函数。如:假设有一个求两者较大的函数如下:intmax(intx,inty);
当我们调用这个函数时可以这样:
intc;
c=max(a,b);这是通常调用方法,其实我们可以定义一个函数指针,通过指针来调用,如:
int(*p)();//注意指向函数指针变量的定义形式
p=max;//此句就是将函数的入口地址赋给函数指针变量p
c=(*p)(a,b);
有些朋友可能对(*p)()不大理解,其实它的意思就是定义一个指向函数的指针变量p,p不是固定指向哪个函数的,而是专门用来存放函数入口地址的变量。在程序中把哪个函数的入口地址赋给它,它就指向哪个函数。但要注意,p不能象指向变量的指针变量一样进行p++,p-等无意义的操作。
既然p是一个指针变量,那么就可以作为函数的参数进行传递。其实函数的指针变量最常用的用途之一就是作为函数参数传递到其它函数。这也是c语言中应用的比较深入的部分了。