c语言结构体中成员函数指针入参为结构体本身 应该怎么写
时间: 2024-11-12 07:13:17 浏览: 10
在C语言中,如果你想在一个结构体的成员函数指针中接收该结构体本身作为参数,你需要这样做:
首先,定义一个指向结构体成员函数的指针类型。假设我们有一个名为`MyStruct`的结构体,它有一个名为`myFunction`的成员函数,接受一个`MyStruct`类型的参数。我们可以声明这样的指针类型如下:
```c
typedef void (*func_ptr_type)(MyStruct*);
```
然后,在`MyStruct`结构体内部,你可以定义一个用于存放成员函数指针的变量,并将其设置为你想要调用的函数:
```c
struct MyStruct {
// 其他成员...
void (MyStruct::*function_ptr)(MyStruct*);
};
// 示例:创建并初始化成员函数指针
void myMethod(MyStruct s) {
// 这里是`myFunction`的实现
}
MyStruct obj;
obj.function_ptr = &MyStruct::myMethod; // 将函数地址赋给成员函数指针
```
当你需要调用这个成员函数的时候,可以这样做:
```c
(obj.*obj.function_ptr)(obj); // 通过指针调用结构体内的函数
```
这里的关键是使用`.`运算符结合指针和结构体实例来调用成员函数。
阅读全文