具體代碼如下:#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
提交
取消