具体代码如下:
#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]的各个成员,为何这样能行?
婷婷同学_
ABOUTYOU