指向函数的的指针

前言:  可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。

 函数在编译的时候会被分配给一个入口地址,可以用一个指针变量指向函数,然后通过该指针变量调用此函数。

#include <stdio.h>
int main(){
	int max(int,int);
	int (*p)(int,int);
	int a,b,c;
	printf("enter a and b : ");
	scanf("%d,%d",&a,&b);
	p=max;                /*函数名代表该函数的入口地址*/ 
	c=(*p)(a,b);
	printf("max = %d\n",c);
	return 0;
}
int max(int x,int y){
	int z;
	if(x>y)z=x;
	else z=y;
	return (z);
	
}

 

函数指针变量通常的一个用途 是把指针变量作为参数 传递到其他函数(难点) 

#include <stdio.h>
int main(){
	int max(int,int);                            /*函数申明*/
	int min(int,int);                            /*函数申明*/
	void process(int,int,int (*method)(int,int));/*函数申明*/ 
 	int a,b;
 	printf("enter a and b: ");
 	scanf("%d,%d",&a,&b);
 	printf("max= ");
 	process(a,b,max);
 	printf("min= ");
 	process(a,b,min);
}
int max(int x,int y){
	int z;
	if(x>y)z=x;
	else z=y;
	return (z);
}
int min(int x,int y){
	int z;
	if(x<y)z=x;
	else z=y;
	return (z);
}
void process(int x,int y,int (*method)(int,int)){
	int result;
	result=(*method)(x,y);
	printf("%d\n",result);	
}

注:  main函数第一次调用process函数的时候,除了将a,b作为实参,将两个整数传给process的形参x,y外,还将函数名max作为实参将其入口地址传给process函数的中的形参method(method是指向函数的指针变量)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值