函数指针的用法。
程序员文章站
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
上一篇: java同步之volatile解析
下一篇: 深入理解where 1=1的用处