首页 > 编程笔记 > C语言笔记 阅读:28

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

相关文章