C语言函数指针的用法(附带实例)
C语言中的函数指针本身是指针变量,该指针变量指向函数。正如用指针变量指向整型、字符型、数组数据一样,这里是指向函数的入口地址。
C语言程序在编译时,每一个函数在内存中都有一个入口地址,该入口地址就是函数指针所指向的地址。
有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量调用其他类型的变量一样,例如:
【实例】通过函数指针调用函数。代码如下:
C语言程序在编译时,每一个函数在内存中都有一个入口地址,该入口地址就是函数指针所指向的地址。
有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量调用其他类型的变量一样,例如:
void (*pfun)(int data); //定义一个函数指针 void myfun(int data); //声明函数 pfun = myfun; //将myfun()函数的首地址赋给指针变量pfun (*pfun)(100); //通过函数指针调用函数上面的例子先定义了一个函数指针,这个函数指针的返回值为 void 型,然后声明该函数;再给函数指针变量 pfun 赋值 myfun,也就是 myfun() 函数的首地址,myfun() 函数名就是 myfun() 函数的首地址,此时指针变量 pfun 获得了 myfun() 函数的调用入口地址,最后调用
(*pfun)(100);
也就相当于调用了 myfun() 函数。【实例】通过函数指针调用函数。代码如下:
#include <stdio.h> int Max(int x, int y) //函数声明和定义 { int z; if (x > y) z = x; else z = y; return z; } int main(void) { int(*p)(int, int); //定义一个函数指针 int a = 1, b = 2, c; p = Max; //把函数Max()的首地址赋给指针变量p, 使p指向Max()函数 c = (*p)(a, b); //通过函数指针调用Max()函数 printf("The max is %d\n", c); return 0; }编译运行,结果如下:
The max is 2