c语言函数指针的指针 c语言函数指针的指针是什么( 八 )


参考资料:百度百科-指针
c语言中函数名就是一个指针吗是的 。函数指针就是函数的指针 , 它是一个指针,指向一个函数 。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数 。
例:
A) char * (*fun1)(char * p1,char * p2);
B) char * *fun2(char * p1,char * p2);
表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针 。
C) char * fun3(char * p1,char * p2);
fun3是函数名,p1,p2是参数,其类型为char *型,函数的返回值为char *类型 。
扩展资料
函数指针使用的例子
#include stdio.h
#include string.h
char * fun(char * p1,char * p2)
{
int i = 0;
i = strcmp(p1,p2);
if (0 == i)
{
return p1;
}
else
{
return p2;
}
}
int main()
{
char * (*pf)(char * p1,char * p2);
pf = fun;
(*pf) ("aa","bb");
return 0;
}
C语言函数指针定义在最上面加一句这样的定义
typedef void*(*pFn)();
pFn可以这样理解:首先pFn是一个指针,指针指向一个函数(或者说pFn是一个函数指针),此函数返回一个无类型的指针 。最终定义的变量及函数都是指针罢了,不过是指针的类型不同 。所以在编译时会有警告,说指针类型不匹配 。但对于程序来讲,都是可以在特定的上下文中使用的 。
运行结果是
t1,t2交替出现 。
其实void也可以换为其它的类型如int, double等
又想到一个很好的办法:
这次编译不会有警告,运行也不会出错 。
示例代码如下所示
#include stdio.h
long t1();
long t2();
int main()
{
long(*fn)()= (long (*)()) t1 ;
while(1){
fn = (long (*)()) fn();
}
}
long t1()
{
printf("t1\n");
return (long)t2 ;
}
long t2()
{
printf("t2\n");
return (long)t1 ;
}
关于c语言函数指针的指针和c语言函数指针的指针是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读