用最少的字来阐述函数指针与指针函数之间的本质区别及用法。使用过程中,万变不离其宗,只会在返回的类型,参数类型上做文章,本质不便。
概念:
指针函数本质是一个函数,只是函数的返回值是一个指针。
函数指针本质是一个指针变量,指向函数的指针包含了函数的入口地址。
形式
指针函数:
函数返回值类型 *函数名(参数)
函数指针:
函数返回值类型(*函数名)(参数)
理解:
普通的函数主要分为有返回值和无返回值
void add(int a,int b)---->无返回值
int add(int a ,int b)--->有返回值
指针函数:
当返回值int后面加上*,那返回的就是整形变量的地址。
int *add(int a ,int b)
{
Int c;
c= a+b;
return &c;
}
返回的是整形变量c的地址。
函数指针:
int (*add)(int a, int b)
指向的函数为:
int addp(int c,int d)
使用时:
add = &addp 或add = addp
这样的话,使用时只需要调用add函数就可用以下两种方式:
x= add(1,2)
x= (*add)(1,2)
第一种方式与普通的函数使用没有什么区别,但是相比于第二种来说,难以看出这是一个函数指针。所以我们使用过程中建议使用第二种。
建议使用vs自己写个程序试试,只要理解指针的含义,那以上所述内容就非常好理解。