请问这个 Char *(*Fun_arry[3])(char *,int * ,int); 这个函数的意义是什么?
1个回答
展开全部
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] ;
这样,是不是看起来和普通变量定义一样了?
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] ;
这样,是不是看起来和普通变量定义一样了?
追问
这样做有什么好处?
(这个是函数指针数组吗)?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询