2024年5月30日发(作者:)

结构体内定义函数

在 C 语言中,结构体是一种可以存储不同类型数据的数据类型,它由几个不同的数

据成员组成,这些数据成员可以是标量、数组、指针、甚至是其他结构体。

在结构体中定义函数,其实就是在结构体内部定义一个成员函数。在 C++ 中,结构

体可以像类一样定义成员函数,但在 C 语言中,结构体并没有成员函数的概念。但是,

我们可以使用函数指针作为结构体的成员,从而实现结构体内定义函数。

首先,我们可以在结构体中定义一个函数指针成员,该成员类型为函数指针。函数指

针指向一个特定类型和返回值的函数,我们可以将其视为函数的地址。函数指针的语法如

下:

```c

返回值类型 (*指针名称)(参数列表);

```

例如,定义一个函数指针,指向一个无返回值、一个整数参数的函数:

```c

void (*fun_ptr)(int);

```

接下来,我们可以在结构体定义中声明该函数指针:

```c

struct myStruct {

int a;

void (*print)(void);

};

```

上述代码定义了一个名为 `myStruct` 的结构体,它有两个成员:一个整数 `a` 和

一个函数指针 `print`。该函数指针类型为无返回值,没有任何参数。

然后,在定义结构体变量之后,我们可以实现该函数指针所指向的函数。在这种情况

下,我们需要在结构体定义的外部定义该函数,并将其名称分配给函数指针。例如:

```c

#include

void myPrint() {

printf("Hello, World!n");

}

在上面的代码中,我们首先定义了一个函数 `myPrint()`,它将打印 "Hello,

World!"。然后,在主函数中定义了一个名为 `ms` 的 `myStruct` 变量,该变量的

`print` 成员指向 `myPrint()` 函数。最后,我们调用 `()` 打印 "Hello,

World!"。

值得注意的是,结构体内定义的函数是无法直接调用的,必须先通过结构体变量调用,

例如 `()`。