69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
typedef void(*func)(int);
typedef int(*func2)(int);
struct func_pointer {
int i;
union {
func func;
func2 func2;
} function;
};
void print(int s)
{
printf("%d: ", s);
printf("This is a demo of function pointer!\n");
}
int print2(int s)
{
printf("%d: ", s);
printf("This is the second demo of function pointer!\n");
return 0;
}
int main (int argc, char *argv[])
{
int i;
#if 0
/* Define a function pointer array */
struct func_pointer a[] = {
{1, print},
{2, print},
{3, print},
};
#endif
printf("sizeof(struct func_pointer): %d\n", sizeof(struct func_pointer));
struct func_pointer a = {1, {print}};
struct func_pointer b = {2, {print2}};
for (i = 0; i < sizeof(a) / sizeof(struct func_pointer); i++)
{
a.function.func(i);
b.function.func2(i);
}
return 0;
}
struct func_pointer b = {2};
b.function.func2 = print2;