函数地址类型

项目知识点补充:

1.函数的名字就是函数的地址,函数的地址有两种表现形式:fun 或者&fun
2.函数地址的类型:函数声明去掉函数名字就是函数地址的类型(即由函数的返回值类型和函数的参数及个数决定)

为什么要知道函数地址的类型?

定义一个函数地址类型的指针来指向函数,然后通过这个指针变量去调用这个函数。
举例:

//函数地址

#include <iostream>
#include <cstdio>

//函数地址的类型:int (int a)
int fun (int a)
{
    printf("我是fun\n");
    return 9;
}

//fun和fun1的函数类型完全相同
int fun1 (int a)
{
    printf("我是fun1\n");
    printf("我是fun1\n");
    printf("我是fun1\n");
    return 1;
}

int main() {
    //int (int a)为fun的函数地址类型
    //int (int a)  (*p);理论上这个写法可行,但是正确的写法是下面//p为指向fun这个函数地址类型的指针,(*p表示指针)
    int (*p) (int a) = fun;
    //正确的函数指针变量定义,可以不用写变量a,左边也可写成&fun
    //而且(*p)必须加括号,如果不加括号就成了返回值为int *的函数p(int a)

    //用指针变量p去调用函数;
    // 函数调用:函数地址()
    p(2);					//也可以写成(*p)(2)和&fun配套使用
    return 0;
}


版权声明:本文为weixin_37378594原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。