结构体内定义函数
    在 C 语言中,结构体是一种可以存储不同类型数据的数据类型,它由几个不同的数据成员组成,这些数据成员可以是标量、数组、指针、甚至是其他结构体。
    在结构体中定义函数,其实就是在结构体内部定义一个成员函数。在 C++ 中,结构体可以像类一样定义成员函数,但在 C 语言中,结构体并没有成员函数的概念。但是,我们可以使用函数指针作为结构体的成员,从而实现结构体内定义函数。
    首先,我们可以在结构体中定义一个函数指针成员,该成员类型为函数指针。函数指针指向一个特定类型和返回值的函数,我们可以将其视为函数的地址。函数指针的语法如下:
    ```c
    返回值类型 (*指针名称)(参数列表);
    ```
    例如,定义一个函数指针,指向一个无返回值、一个整数参数的函数:
    ```c
    void (*fun_ptr)(int);
    ```
    接下来,我们可以在结构体定义中声明该函数指针:
    ```c
指针调用成员函数    struct myStruct {
        int a;
        void (*print)(void);
    };
    ```
    上述代码定义了一个名为 `myStruct` 的结构体,它有两个成员:一个整数 `a` 和一个函数指针 `print`。该函数指针类型为无返回值,没有任何参数。
    然后,在定义结构体变量之后,我们可以实现该函数指针所指向的函数。在这种情况下,我们需要在结构体定义的外部定义该函数,并将其名称分配给函数指针。例如:
    ```c
    #include <stdio.h>
    void myPrint() {
        printf("Hello, World!\n");
    }
    在上面的代码中,我们首先定义了一个函数 `myPrint()`,它将打印 "Hello, World!"。然后,在主函数中定义了一个名为 `ms` 的 `myStruct` 变量,该变量的 `print` 成员指向 `myPrint()` 函数。最后,我们调用 `ms.print()` 打印 "Hello, World!"。
    值得注意的是,结构体内定义的函数是无法直接调用的,必须先通过结构体变量调用,例如 `ms.print()`。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。