首先我有声明
char (*x)(int field);
char yes_or_no(int);
char yes_or_no(int field)
{
if(field==1)
return 'y';
else
return 'n';
}
x=&yes_or_no;
printf("Now we can call this function by using the pointer *x by using (*x)(1),\nwhich gives us: \n'%c'\n", (*x)(1));
这很正常,但现在我必须用
做点什么char *y(int field);
哪个是或可能是函数的声明?我怎么能用这最后一个声明/声明做'某事'?
亲切的问候。
答案 0 :(得分:1)
char (*x)(int field);
声明一个函数变量x
,返回char
。
char * y(int field);
声明函数y()
返回char *
。
在第二个声明中注意缺少一对括号()
。
将声明seocnd案例的函数变量:
char * (*yvar)(int field);
答案 1 :(得分:0)
函数指针的类型为:
char *(*x) (int);
宣言:
char *y(int field);
请注意,一元运算符&
不需要具有函数的地址。例如:
#include <stdio.h>
const char *(*x) (int);
const char *yes_or_no(int field);
const char *yes_or_no(int field)
{
if (field == 1)
return "y";
else
return "n";
}
int main(void)
{
x = yes_or_no;
printf("'%s'\n", x(1));
return 0;
}