函数指针

来源:互联网 发布:小人书软件下载 编辑:程序博客网 时间:2024/05/29 16:19

函数指针,顾名思义,首先,它是一个指针,其次,该指针指向一个函数。其作用,一般有两个,一是调用函数,二是做函数的形参。

函数指针

下面是一个函数声明:

int add (int a,int b);

而函数指针则为:

int (*add)(int a,int b);

需要注意的是第一,括号必须加括号,将函数名与指针结合在一起,否则是指针函数;第二,指针函数的声明和调用,类型必须一致。

一个示例如下:

#include <stdio.h>int add(int a,int b){    return a+b;}int main(){    //函数指针的定义与初始化    int (*funptr)(int,int) = add;      //调用函数指针    int sum = funptr(2,4);    printf("%d",sum);    return 0;}

函数指针数组

函数指针数组,是以数组的形式,对函数指针进行组织,一般有两种方法。

第一:类似于数组的方式直接定义

#include <stdio.h>int add(int a,int b){    return a+b;}int minus(int a,int b){    return a-b;}int main(){    int a,b;    //类似于数组的方式直接进行定义    int (*funptr[])(int,int) ={add,minus};    a = (funptr[0])(2,4);    b = (funptr[1])(2,4);    printf("%d,%d",a,b);    return 0;}

方法二: 借助于typedef

#include <stdio.h>#include <stdlib.h>#include <others.h>#include <sort.h>int add(int a,int b){    return a+b;}int minus(int a,int b){    return a-b;}//声明一个函数指针数组typedef int (*funptr[])(int,int);int main(){    int a,b;    //定义函数指针数组,funptr已经为数组类型,此时fpt不能定义为    //fpt[],会报错    funptr fpt ={add,minus};    a = (fpt[0])(2,5);    b = (fpt[1])(2,5);    printf("%d,%d",a,b);    return 0;}
0 0
原创粉丝点击