c语言函数指针及使用

函数指针

指向函数的指针

函数名表示分配给这个函数的地址

用指针指向这个地址即可

void f(void);//函数声明
void (*pf)(void) = f;//定义函数指针
函数返回值类型 (*指针变量名)(函数的参数列表);

函数指针的使用

例程1

#include<stdio.h>

void f( int a ){              //定义三个函数
	printf( "f()  %d\n", a );
}
void g( int b ){
	printf("g()  %d\n", b);
}
void h( int c ){
	printf("h()  %d\n",c);
}

int main( int argc, char *argv[] )
{
	int i;
	printf("请输入一个数(0-2):");
	scanf("%d", &i);
	void (*fa[]) (int) = { f, g, h };  //定义一个函数指针数组
	if( i>=0 && i<sizeof(fa)/sizeof(fa[0]) ){
		(*fa[i]) (8) ; 后期添加函数不用动此部分,只需在数组中添加和写好函数体即可
	}
	return 0;
}

例程二

#include<stdio.h>

int plus (int a, int b){
	return a+b;
}
int minus (int a, int b){
	return a-b;
}
int cal( (*p)(int, int) ){ //把一个函数作为参数传给另一个函数
		printf( "%d\n",(*P)(2,3) );
	}
int main(int argc, char const *argv[])
{
	cal(plus);//改变传入的参数就可以改变相应的功能
	cal(minus);
	return 0;
}

例程二改进版

#include<stdio.h>

int plus (int a, int b){
	return a+b;
}
int minus (int a, int b){
	return a-b;
}
void cal( int (*p)(int, int), int a, int b ){//给函数增加两个形参
		printf( "%d\n",(*p)(a, b) );//声明此处传入函数的变量
	}
int main(int argc, char const *argv[])
{
	int a, b = 0;
	scanf("%d %d",&a, &b);//实现函数对输入进行相应操作
	cal (plus,a,b);
	cal (minus,a,b);
	return 0;
}

1.直接算出传入函数值不行,(*p)(2,3)输出时数字已经定好

2.只把传入函数(*p)的常量改为变量,也不行,报错变量未声明

3.给cal函数三个参数,这时候把传入函数的参数改成变量就没问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值