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!"。
值得注意的是,结构体内定义的函数是无法直接调用的,必须先通过结构体变量调用,
例如 `()`。
发布评论