在C

时间:2016-08-08 21:27:20

标签: c function-pointers

我正在编写一个调用函数指针的程序,该函数指针指向另一个文件中的函数。当我编译程序时,我收到编译器的错误消息,说有一个预期的表达式。 以下是产生的四个错误之一:

error: expected expression
(*get_num)(int *, int *);

编译器表示该表达式应在(int之间。 对于其他三个函数指针调用,每个都显示相同的错误。 我是否正确调用了函数指针?

#include <stdio.h>

int getnum(int items[], int *amount);
int sortnum(int items[], int amount);
int printnum(int items[], int amount);
int searchnum(int items[], int amount);

int (*get_num)(int *, int *);
int (*sort_num)(int *, int);
int (*print_num)(int *, int);
int (*search_num)(int *, int);

int main()
{
    int items[maxitem];
    int amount;

    get_num = getnum;
    sort_num = sortnum;
    print_num = printnum;
    search_num = searchnum;

    (*get_num)(int *, int *);
    (*sort_num)(int, int);
    (*print_num)(int, int);
    (*search_num)(int, int);
}

1 个答案:

答案 0 :(得分:0)

调用函数时,需要提供合适的值作为参数。电话

(*get_num)(int *, int *);

不要这样做。

使用

(*get_num)(items, &amount);

或更具可读性:

get_num(items, &amount);

对其他来电进行类似的更改。

(*sort_num)(items, amount);
(*print_num)(items, amount);
(*search_num)(items, amount);