指针函数
函数的返回值为指针称为指针函数
定义形式
int *well(int a,int b)
{
函数
}
某数理化三项竞赛训练组有三个人,找出其中至少有一项成绩不合格者,指针函数实现
#include<iostream>
using namespace std;
int* seek(int(*p_row)[3])
{
int i = 0, * p;
p = *(p_row + 1);
for(;i<3;i++)
if (*(*p_row + i) < 60)
{
p = *p_row;
break;
}
return(p);
}
void main()
{
static int grade[3][3] = { {55,65,75} ,{65,75,85} ,{75,80,90} };
int i, j, * pointer;
for (i = 0; i < 3; i++)
{
pointer = seek(grade + i); //用行指针做实参,调用seek
if (pointer == *(grade + i)) //至少有一门不及格
{
cout << "NO." << i + 1 << "grade list:";
for (j = 0; j < 3; j++)
cout << *(pointer + j) << " ";
cout << endl;
}
}
}
/*seek函数判断是否有不合格,利用返回值判断pointer==*(grade+i),若有不合格相等*/
结果
指向函数的指针变量
一个函数也储存在某一段内存中,这段内存空间的起始地址就称为函数的入口地址,即函数的指针
定义一个指针变量,用来存放函数的入口地址,使其指向这个函数,这种指针变量称为函数的指针变量
故调用函数的形式有两种,一是函数名调用,而是通过指向函数的指针来调用
定义指向函数的指针变量
类型标识符(*指针变量名)();
例如:
int (*p)();
赋值函数的入口地址
int max(int i);
int (*p)();
p=max;
通过指向函数的指针变量间接调用函数
求变量a和b的最大值
#include<iostream>
using namespace std;
void main()
{
int max(int x, int y);
int (*p)(int ,int);
int a, b, c;
p=max;
cin >> a >> b;
c = (*p)(a, b);
cout << "a=" << a << " b=" << b << " max=" << c << endl;
}
int max(int x, int y)
{
int z;
if (x > y)
z = x;
else
z = y;
return(z);
}
结果