函数指针与指针函数的区别与联系—引用和指针(三)

目录

 

函数指针和指针函数的定义

函数指针

指针函数

示例

用typedef来完成函数指针的定义


函数指针和指针函数的定义

函数指针

一个指向函数的指针,该函数有一个整型参数并返回一个整型数,

int(*a)(int)
指针类型标识符(*返回名称)(所接收函数的返回类型)

必须要确保所接收的函数返回类型和实际函数返回的类型对应。

函数指针的本质是指针,是指向函数的指针变量,因而其本身先是指针变量,只不过这个指针变量指向的内容为一个函数。当这个指针指向函数之后,就可以用这个指针去调用函数了,就想是指针调用其他变量一样。

指针函数

一个函数的返回值是一个指针:

返回类型标识符 *返回名称(形式参数表){函数体}
float *find(float *p, int x) {return p+x}

示例

#include <stdio.h>
#include <iostream>

using namespace std;

int max(int x, int y)
{
	return (x > y ? x : y);
};

float *find(float* y, int x)
{
	return y + x;
};

int main()
{
	//指针函数的用法
	float score[] = {5,2,3,4};
	float *q = find(score+1, 1); //指针函数
	printf("*q =  %f\n", *q); //注意此处的float类型,不是int,所以应该是%f.
	//cout << *q << endl;

	//函数指针的用法
	int a;
	int(*p)(int, int);//定义一个函数指针
	p = max; //将函数指针与指针函数进行绑定
	a = (*p)(1, 2);
	printf("a=%d\n",a);

	system("pause");
	return 0;
}

运行结果:

用typedef来完成函数指针的定义

下面用typedef来定义一个函数指针:

#include <stdio.h>
#include <iostream>

using namespace std;


int main()
{
	typedef int(*pfun)(int x, int y);//定义一个名为pfun的函数指针

	//int fun(int x, int y);//声明一下fun函数,直接把函数定义部分的头给放到这儿也行
	int fun(int, int); //这种方式的声明不容易混淆

	pfun p = fun;//将函数指针与定义的函数绑定
	int ret = p(2, 3);//用函数指针去调用这个函数

	printf("ret:%d\n", ret);
	system("pause");
	return 0;
}

int fun(int x, int y)//定义一个函数
{
	return x + y;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值