刚刚看到一篇文章写的是有关cuda指针的博客,我不是很明白,就复制过来写写我的疑问。
原文博客是http://bbs.csdn.net/topics/390957076
typedef int (*FP)(int);
int Fun(int n)
{
return n*2;
}
void TestFP(int n, FP fun)
{
printf("%d\n", fun(n));
}
FP fp = Fun;
int main()
{
TestFP(5, fp);
return 0;
}
第一句话就蒙了,我的理解是定义了一个函数指针类型,名字叫做FP,这个函数指针只能指向int类型的函数,不知道对不对
FP fp = Fun;
这句的意思是这个函数指针类型加了一个变量,变量名是fp,我觉得应该是个指针吧
结果出来的是10
void TestFP(int n, FP fun)
如果把这行的FP改成int,编译会成功嘛?不会的,写的是
17: error: invalid conversion from `int (*)(int)' to `int'
我先看看指向函数的指针,把这段代码改一下
#include<stdio.h>
int Fun(int);
int (*FunP)(int);//定义指向函数的指针
FunP=Fun;//这个指针指向这个函数;
void TestFP(int n, int(*P)(int))
{
printf("%d\n",(*P)(n));
}
int main()
{
TestFP(5, Fun);
return 0;
}
int Fun(int n)
{
return n*2;
}
这样的话我以为就好了,关键是运行不通过啊,提示是:4: error: expected constructor, destructor, or type conversion before '=' token
后来改成这个样子就成功了,我还不知道是为什么呢。。。。
#include<stdio.h>
void TestFP(int n, int(*P)(int))
{
printf("%d\n",(*P)(n));
}
int main()
{
int Fun(int);
int (*FunP)(int);//定义指向函数的指针
FunP=Fun;//这个指针指向这个函数;
TestFP(5, Fun);
return 0;
}
int Fun(int n)
{
return n*2;
}