typedef int (*MyFunc)();
MyFunc Func1;
int Func2()
{
printf("This is a sample output!\n");
return 0;
}
int main(int argc, char* argv[]){
Func1 = Func2; //将函数Func2的函数地址赋值给Func1函数指针
printf("%x\n", Func1);
printf("%x\n", *Func1);
printf("%x\n", Func2); //可以看到Func1、 *Func1、Func2的地址是一样的
Func1(); //所以
(*Func1)(); //所以
return 0;
}
声明一个int(*)()类型(函数指针类型) ,并用MyFunc代表。
typedef int (*MyFunc)();
用函数指针类型声明一个函数指针变量Func1。
MyFunc Func1;
定义一个函数,注意函数签名。
int Func2()
{
printf("This is a sample output!\n");
return 0;
}
- 将函数Func2的函数地址赋值给Func1函数指针
- 可以看到Func1、 *Func1、Func2的地址是一样的
int main(int argc, char* argv[]){
Func1 = Func2; //将函数Func2的函数地址赋值给Func1函数指针
printf("%x\n", Func1);
printf("%x\n", *Func1);
printf("%x\n", Func2); //可以看到Func1、 *Func1、Func2的地址是一样的
Func1();
(*Func1)();
return 0;
}
所以两种方式其实都是直接调用了Func()。
Func1();
(*Func1)();