2021-01-22

指针函数

函数的返回值为指针称为指针函数

定义形式
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);
}

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.头发掉不完.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值