请问这个 Char *(*Fun_arry[3])(char *,int * ,int); 这个函数的意义是什么?

 我来答
kaixingui2012
2011-09-13 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6267万
展开全部
1.这是一个变量声明
2.变量名为:Fun_arry
3.它是一个数组: 通过[3]看出
4.它是一个函数指针:变量名前有*,说明它是指针,后面有(char *,int * ,int);说明它是函数。
5.最前面的char *,说明这种函数的返回类型为char *。
给你一个例子供你参考,理解。
#include <stdio.h>

char * myfunc1( char *a,int *b, int c )
{
*b=c+1 ;
sprintf(a,"return %d" , *b );
return a ;
}

char * myfunc2( char *a,int *b, int c )
{
*b=c*c ;
sprintf(a,"return %d" , *b );
return a ;
}

int main()
{
char *(*Fun_arry[3])(char *,int * ,int);
char str[32];
int x , y ;

Fun_arry[0]=myfunc1 ;
Fun_arry[1]=myfunc2 ;
y=5 ;

printf( "fun1=%s\n" , Fun_arry[0](str,&x,y) );
printf( "fun2=%s\n" , Fun_arry[1](str,&x,y) );
}
C语言提供了typedef命令可以帮助我们更清晰的认识这种定义,如:
typedef char * (*MYFUNC_TYP)(char *,int * ,int) ; //定义一个新的类型MYFUNC_TYP,这种类型是:一个带有三个参数,并返回char* 的函数。
以上你的那句语句:Char *(*Fun_arry[3])(char *,int * ,int); 就可以换成这样定义了:
MYFUNC_TYP Fun_arry[3] ;
这样,是不是看起来和普通变量定义一样了?
追问
这样做有什么好处?
(这个是函数指针数组吗)?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式