具体代码如下:#include <stdio.h>#include <stdlib.h>typedef int (*Func)() ;int func0(int a);int func1(int a, int b);int func2(int a, int b, int c);int FuncPtrArrInit(Func *p, int n);int func0(int a){printf("Func:%s, a = %d\n", __func__, a);return 0;}int func1(int a, int b){printf("Func:%s, a = %d, b = %d\n", __func__, a, b);return 0;}int func2(int a, int b, int c){printf("Func:%s, a = %d, b = %d, c = %d\n", __func__, a, b, c);return 0;}int FuncPtrArrInit(Func *p, int n){Func fn[3];fn[0] = p[0];fn[1] = p[1];fn[2] = p[2];fn[0](0);fn[1](1,1);fn[2](2,2,2);return 0;}int main(){Func afn[3];afn[0] = func0;afn[1] = func1;afn[2] = func2;FuncPtrArrInit(afn, 3);return 0;}--------------------------------------------我的问题就是开始处,这个程序定义了typedef int (*Func)() ;即Func表示一个返回值为整型,无形参的函数指针类型。但是下面赋值时,func1,func2,func3每个函数的形参个数都不一样,而且均是有形参的,但是上面的代码就直接将这个函数地址给了Func类型的数组afn[3]的各个成员,为何这样能行?
添加回答
举报
0/150
提交
取消