欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数指针的用法。

程序员文章站 2024-02-23 15:14:34
...
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>



typedef int (*funtcb)(void);

int functa(void)
{
        printf("%s %d \n",__func__,__LINE__);
        return 0;
}

int add(int a, int b )
{
        int sum;
        typeof(sum) t;
        t = sum = a+b;
        printf("[%s %d] sum %d \n",__func__,__LINE__,a+b);
        return a+b;
}
int main(void)
{
        {
                funtcb p = functa;
                p();
        }
        {
                funtcb p2 = functa;
                (*p2)();
        }
        {
                funtcb pp = &functa;
                pp();
        }
        {
                funtcb p3 = &functa;
                (*p3)();
        }
        {
                void* pv = NULL;
                pv = functa;
                ((funtcb)pv)();
        }
        {
                void* pv2 = NULL;
                pv2 = add;
                (( int (*)(int, int)  )pv2)(3,3);
        }
        //typeof(一个函数的类型。
        {
                void* pv2 = NULL;
                pv2 = add;
                (( typeof(&add) )pv2)(3,3);
        }
        return 0;
}
[ test-function-point]$ gcc main.c
[ test-function-point]$ ./a.out
functa 12
functa 12
functa 12
functa 12
functa 12
[add 21] sum 6
[add 21] sum 6

 

相关标签: 函数指针