今天Mayuyu将要讲的是指针函数和函数指针,听着怎么这么绕口?没错,这两个概念及容易搞混,现在Mayuyu就来
给你讲讲它们的区别及用法。
(1)指针函数
从名字可以看出,它本质上是一个函数,这是一个返回值类型为指针的函数,比如:
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int *Find(int x)
{
static int a[] = {0,1,2,3,4,5,6,7,8,9};
if(x < 0 || x > 9) return NULL;
return a + x;
}
int main()
{
int *p = Find(8);
cout<<*p<<endl;
return 0;
}
嗯,指针函数挺简单的,没有什么可以说的,接下来我们重点讲解函数指针。
(2)函数指针
同指针函数一样,从名字可以读出它是一个指针,可以把整个函数当作一个指针,进而对它进行操作。比如
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
int Find(int x)
{
static int a[] = {0,1,2,3,4,5,6,7,8,9};
if(x < 0 || x > 9) return -1;
return *(a + x);
}
int main()
{
int (*f)(int x);
f = Find;
cout<<f(5)<<endl;
return 0;
}
函数指针与指针函数的最重要区别就是一个是指针变量,而另一个是函数。
通过上面代码比较也很容易知道它们的区别了。