5个回答

C语言以下描述如何表示出来?

Gary
3个点赞 👍

我们来一步步剥一下洋葱吧。先说答案:

int (*(*fp)(int, int))(int);

首先,他是个指针,所以:

*fp

然后,这个指针它指向一个函数,它的参数是 (int, int),且返回值也是一个指针:

*(*fp)(int, int)

然后,这个返回的指针指向一个函数,这个函数参数是 int,返回值也是 int

int (*(*fp)(int, int))(int);

剥洋葱结束。

最后,我们来简单写个程序测试一下:

int ff(int n) {
    return n;
}

int (*f(int x, int y))(int) {
    (void)x, (void)y;
    return &ff;
}

int func() {
    int (*(*fp)(int, int))(int) = &f;
    return fp(0, 0)(88);
}

int main() {
    return func();
}

可以看到成功返回 88:

成功返回 88

最后,人生苦短,请善用 typedef。

编辑于 2023-07-18 02:55・IP 属地北京
Timothy Liu
自由评论 (0)
分享
Copyright © 2022 GreatFire.org