指针作为函数的声明?

时间:2012-11-07 11:49:07

标签: c pointers

首先我有声明

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);

哪个是或可能是函数的声明?我怎么能用这最后一个声明/声明做'某事'?

亲切的问候。

2 个答案:

答案 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;
}