函数指针的定义

在将程序装入内存后,每个函数都要占用一段连续的内存区域,而函数名就是这段内存
区域的首地址(或称函数的入口地址)。可以把某个函数首地址赋给一个指针变量,使
之指向该函数,然后通过这个指针变量调用该函数。习惯上把这种指向函数的指针变量
称为函数指针变量,简称函数指针。
定义函数指针变量的一般形式:
类型标识符(* 指针变量名)(类型标识符1,类型标识符2…);
其中第一个类型标识符表示被指函数返回值的类型,圆括号内的类型标识符用以说明所
指函数的参数个数和参数的类型,这些类型标识符应与所指函数参数的类型一一对应。
如果所指函数没有形参,这一圆括号也不可省略。比如:

int( * pf)(int,int *);

表示pf是一个指向函数的指针变量,所指向函数的返回值必须是整型,且具有两个参数,
依次为整型和指向整型的指针。
用函数指针变量来调用函数的一般形式为:
(* 指针变量名)(实参表)
下面用例子说一下,用函数指针变量调用函数。

#include <stdio.h>
int max(int a,int b)
{
	if(a>b)
		return a;
	else
		return b;
}
int main()
{
	int max(int a,int b);
	int (*pmax)(int,int);		/* pmax是一个指针变量,指向返回值为整型的函数*/
	int x,y,z;
	pmax=max;					/* pmax指向函数max*/
	printf("input two numbers:\n");
	scanf("%d %d",&x,&y);
	z=(*pmax)(x,y);				/*调用pmax所指函数max,返回一个整型值,赋给z*/
	printf("maxnum=%d\n",z);
	return 0; 
}

程序运行结果如下:
input two numbers:
3 5
maxnum=5
使用函数指针变量还应注意以下两点:
(1)函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减
一个整数可使指针移动,指向数组的其他元素,而函数指针的移动是毫无意义的。
(2)函数调用调用中“(*指针变量名)”两边的括号不能少,其中的“ * “不应该理解为指针
运算符,在此处它只是一种指示符号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值