看了半天实在没太懂 不知道这函数指针到底有什么作用哦 请大大们解答下
问题在注释部分
#include<stdio.h>
#define MAX 100
typedef char *(*PtoFun)();
main()
{
void *call(PtoFun);//PtoFun应该是类型不是参数吧,为什么可以这么写?
PtoFun RtnFunc();
printf("%s",call(RtnFunc()));//直接写一个printf不行么?好象条件都具备了
return 0;
}
char *hello()
{
return "Hello World!\n";
}
PtoFun RtnFunc()
{
return hello;//return是为什么了声明么?
}
void *call(PtoFun func)
{
return (*func)();//return 这个有什么用?做声明?
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define MAX 100
typedef char *(*PtoFun)();//定义函数指针
main()
{
void *call(PtoFun);//PtoFun应该是类型不是参数吧,为什么可以这么写?//函数声明,是可以在main里面的,只要在调用之前就可以。
PtoFun RtnFunc();
printf("%s",call(RtnFunc()));//直接写一个printf不行么?好象条件都具备了//函数调用,调用call(RtnFunc()),把RtnFunc()以函数指针作为实数。
return 0;
}
char *hello()
{
return "Hello World!\n";
}
PtoFun RtnFunc()
{
return hello;//return是为什么了声明么?//不是为了声明,就是调用 hello 函数的地址就是char *hello()
}
void *call(PtoFun func)
{
return (*func)();//return 这个有什么用?做声明?//不是为了声明,就是调用 (*func)() 函数的地址就是PtoFun RtnFunc()
}
是两次函数指针的调用
----------------解决方案--------------------------------------------------------
感谢LS的回答 , 还是比较迷糊啊 我继续看看
不过还有问一下 函数指针有什么作用?在什么情况下要使用呢?
----------------解决方案--------------------------------------------------------
函数指针可以用来调用函数,,不过它最常用的功能就是做为把函数指针作为参数传递给其它函数。
一般单片机里面的中断程序就是以函数指针来调用。
----------------解决方案--------------------------------------------------------