C语言中的函数指针

一直觉得函数指针是个很难的东西,其实函数指针和一般的指针一样,挺简单的。

一,函数指针的定义

函数指针,顾名思义就是指向函数的指针,就是指向函数存储区域起始地址的指针。先看一下它是如何声明的:

char* (*pf)(char *,char *);
这条语句声明了一个指向函数的指针,这个函数有俩个字符指针的参数,也返回一个字符指针。

有时候容易搞错函数指针和一般的函数声明,比如说:

char *fun(char *,char *);
char **fun(char *,char *);
第一条语句声明了一个函数,它有俩个字符指针参数,也返回一个字符指针。注意这条语句和上一条的区别,函数指针要用小括号括起来。

第二条语句也声明了一个函数,它返回的是一个指针的指针。

有时候情况很复杂,只要从最里面开始分析,细心点应该能分析出来是什么声明。

二,函数指针的使用

函数指针的使用和一般的额指针一样,声明之后赋值,然后用(*)符号来运行这个函数就行了。下面是一个简单的例子:

#include <stdio.h>
#include <string.h>


char* fun(char *a,char *b)
{
	if(strlen(a)>=atrlen(b))
	{
		return a;	
	}
	else
	{
		return b;
	}


}

int main()
{
	char* (*pf)(char *,char *);
	char *p;
	pf=&fun;//也可以直接用pf=fun来赋值
	p=(*pf)("111","10");   //用(*)号来运行函数
	printf("%s\n",p);
	return 0;
}


三:函数指针数组

也和一般的指针数组一样,下面是一个小例子:

#include <stdio.h>
char *fun1(char *a)
{
	printf("%s\n",a);
	return a;
}

char *fun2(char *a)
{
	printf("%s\n",a);
	return a;
}

char *fun3(char *a)
{
	printf("%s\n",a);
	return a;
}

int main()
{
	char* (*pf[3])(char *a);
	pf[0]=&fun1;//依次赋值就行
	pf[1]=&fun2;
	pf[2]=&fun3;

	pf[0]("aa");
	pf[1]("bb");
	pf[2]("cc");
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值