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

目录

 

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

函数指针

指针函数

示例

用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;
}

运行结果:

发布了278 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_17846375/article/details/104968095