函数指针:就是指向函数的指针变量,其本质还是一个指针,只是这个指针指向的是一个函数
用法:
#include <iostream>
using namespace std;
int MAX(int x, int y);
void main()
{
int a,b;
cout << "please input a and b :";
cin >> a >> b;
int (*p)(int x, int y);
p = MAX;
cout << "max = ";
int m = p(a,b); //int m = (*p)(a,b); 也是可以的
cout << m << endl;
}
int MAX(int x, int y)
{
return x>y?x:y;
}
扩展,可以将一个指向函数的指针当做另一个函数的参数,直接上代码:
#include <iostream>
using namespace std;
int MAX(int x, int y);
int MIN(int x, int y);
int add(int x, int y);
void process(int x, int y, int (*fun)(int x, int y));
void main()
{
int a,b;
cout << "please input a and b :";
cin >> a >> b;
cout << "max = ";
process(a,b,MAX);
cout << "min = ";
process(a,b,MIN);
cout << "sum = ";
process(a,b,add);
}
int MAX(int x, int y)
{
return x>y?x:y;
}
int MIN(int x, int y)
{
return x>y?y:x;
}
int add(int x, int y)
{
return x+y;
}
void process(int x, int y, int (*fun)(int x, int y))
{
int result;
result = (*fun)(x,y);
cout << result << endl;
}
指针函数:就是带指针的函数,其本质还是一个函数
应用示例:
#include <iostream>
using namespace std;
int *search(int (*p)[4], int n);
int *search1(int array[][4], int n);
void main()
{
int score[][4] = {{23,53,24,53},{27,38,46,28},{37,48,29,40}};
int *p,*q;
int n;
cout << "please input a number:";
cin >> n;
p = search(score,n);
q = search1(score,n);
for (int i=0;i<4;i++)
cout << *(p+i) << " ";
cout << endl;
for (int i=0;i<4;i++)
cout << *(q+i) << " ";
cout << endl;
}
int *search(int (*p)[4], int n)
{
int *result;
result = *(p+n);
return result;
}
int *search1(int array[][4], int n)
{
int *result;
result = &array[n][0];
return result;
}
后来也发现一篇讲的不错的博客:函数指针和指针函数用法和区别