作为结构成员的功能指针如何工作?

时间:2019-11-28 13:40:47

标签: c structure function-pointers

嗨,我正在寻找将函数作为结构的成员,我发现以下代码表明函数指针可以是结构的成员。 我在下面找到了一个代码,但是没有人可以向我解释它的工作原理。

bool isHexMode(std::ostream& os) {
    return (os.flags() & std::ios_base::hex) != 0;
}
  

我对编译器如何处理下面的这一行感到困惑。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct point
{
    int x;
    int y;
    void (*print)(const struct point*);
};

void print_x(const struct point* p)
{
    printf("x=%d\n", p->x);
}

void print_y(const struct point* p)
{
    printf("y=%d\n", p->y);
}

int main(void)
{
    struct point p1 = { 2, 4, print_x };
    struct point p2 = { 7, 1, print_y };

    p1.print(&p1);
    p2.print(&p2);

    return 0;
}

0 个答案:

没有答案