当前位置 : 主页 > 编程语言 > c语言 >

函数指针和函数指针数组

来源:互联网 收集:自由互联 发布时间:2023-08-25
1.函数指针 函数指针:指向函数的指针 可通过函数指针调用函数 #include stdio.h//函数指针//函数名和函数名都可表示函数的地址,可通过函数指针调用函数int Add(int x, int y){ return x + y;}i

1.函数指针

函数指针:指向函数的指针

可通过函数指针调用函数

#include <stdio.h>

//函数指针
//函数名和&函数名都可表示函数的地址,可通过函数指针调用函数
int Add(int x, int y)
{
    return x + y;
}
int main()
{
    int (*pf)(int, int) = &Add;//也可写为Add
    int a = Add(8, 4);
    int b = (&Add)(8, 4);//Add和&需要加括号,否则Add先和后面的括号结合
    int c = (*pf)(8, 4);
    int d = pf(8, 4);
    printf("%d\n", a);
    printf("%d\n", b);
    printf("%d\n", c);
    printf("%d\n", d);

}

运行结果:

调用结果相同

函数指针和函数指针数组_函数指针


2.函数指针数组

函数指针数组:存放函数指针的数组(转移表)

如 int(*arr[4])(int,int) ;//*arr[4]是指针数组的类型,外侧为数组元素(存放的元素即函数指针)的类型

以下为利用函数指针数组写的简易计算器

#include <stdio.h>

/*简易计算器*/
int Add(int x, int y)
{
    return x + y;
}

int Sub(int x, int y)
{
    return x - y;
}

int Mul(int x, int y)
{
    return x * y;
}

int Div(int x, int y)
{
    return x / y;
}

int main()
{
    int (*arr[4])(int, int) = { Add,Sub,Mul,Div };//函数指针数组,元素为函数指针,Add是函数名,可表示函数的地址,此处可将Add改为&Add
    int i = 0;
    for (i = 0; i < 4;i++)
    {
        int ret = arr[i](8, 4);//分别计算8对4的加减乘除
        printf("%d\n", ret);
    }
}

运行结果:

函数指针和函数指针数组_数组_02

3.指向函数指针数组的指针(了解,知道即可)

int (*arr[4])(int, int) = { Add,Sub,Mul,Div };//
int (*(*ppfarr)[5](int,int)=&arr;//*ppfarr是指针,指向数组,而指向数组则是存放函数指针的数组



以上就是函数指针和函数指针数组的定义,欢迎指正交流~

【文章出处:香港服务器 https://www.68idc.cn欢迎留下您的宝贵建议】
上一篇:Cloudreve搭建云盘系统,并实现随时访问
下一篇:没有了
网友评论