区别
-
指针函数: 指针函数本质是一个函数,其返回值为指针。如:int* fun(int x,int y);
-
函数指针: 函数指针本质是一个指针,其指向一个函数。如:int (*fun)(int x,int y);
理解(欢迎批评指正):
-
在指针函数中,先看int*,这是一个指针类型,就和int、char一样,是一种类型。而int *是用来定义指针的,现在它后面接一个函数,所以叫指针函数。对于指针函数的作用,我们看看它的类型是指针类型int*,那返回值就是一个指针。
-
在函数指针中,int 后面接的是函数 (*fun)(int x,int y);(你不能解读成 int(*是表示一种类型),而函数名称(*fun)中含有指针,所以先后连起来读,叫函数指针。对于函数指针的作用,我们看看它的类型,int 或者 是void,而 (*fun)就是函数原型中的函数名称,说明*fun指向了一个函数名,就指向了一个函数呗。
-
做任何事情差不多就好,必须认真,但是不能太认真,过犹不及。
VS测试用源代码:
#include <iostream>
using namespace std;
/******指针函数******/
//int *GetNum(int x); //指针函数声明形式
//
//void main(void)
//{
// cout << "===============start================" << endl;
// int num;
// cout << "Please enter the number between 0 and 6: ";
// cin >> num;
// cout << "result is:" << *GetNum(num) << endl; //输出返回地址块中的值
//}
//
//int *GetNum(int x) {
// static int num[] = { 0,1,2,3,4,5,6 };
// return &num[x]; //返回一个地址
//}
/********函数指针**********/
int max(int a, int b) {
return a>b ? a : b;
}
void main(void)
{
cout << "===========start===========" << endl;
int(*func)(int, int); //定义一个指向该函数形式的指针变量
func = max;
int a, b;
cout << "Please enter two numbers:";
cin >> a >> b;
int result = (*func)(a, b); //运用指针变量调用函数
cout << "max=" << result << endl;
}