1

首先我有声明

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

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

亲切的问候。

4

2 回答 2

1
char (*x)(int field);

声明一个函数变量x,返回char.

char * y(int field);

声明一个y()返回的函数char *

注意第二个声明中缺少的一对括号()

将声明 seocnd 情况的函数变量:

char * (*yvar)(int field);
于 2012-11-07T11:55:23.337 回答
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;
}
于 2012-11-07T11:54:48.863 回答