码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中的函数指针

时间:2015-08-21 13:46:26      阅读:190      评论:0      收藏:0      [点我收藏+]

标签: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;<span style="white-space:pre">	</span>//也可以直接用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;<span style="white-space:pre">	</span>//依次赋值就行
	pf[1]=&fun2;
	pf[2]=&fun3;

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




版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言中的函数指针

标签:c语言   函数指针   

原文地址:http://blog.csdn.net/u012000209/article/details/47831601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!