C语言 封装方法传参LPVOID并返回指针
时间: 2023-08-04 15:16:09 浏览: 94
在 C 语言中,封装可以通过定义结构体和结构体内部的函数来实现。函数可以通过传递指针参数来实现对结构体成员的访问和修改。
LPVOID 是一个指向 void 类型的指针,可以用来指向任何类型的数据,因此可以将它作为参数来传递任意类型的指针。函数也可以通过返回指针来返回指向某个数据结构的指针。
以下是一个示例代码,演示了如何使用封装来传递 LPVOID 类型的指针参数并返回指针:
```c
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
Point* create_point(int x, int y) {
Point* p = (Point*) malloc(sizeof(Point));
p->x = x;
p->y = y;
return p;
}
void destroy_point(Point* p) {
free(p);
}
void set_point_x(LPVOID ptr, int x) {
Point* p = (Point*) ptr;
p->x = x;
}
void set_point_y(LPVOID ptr, int y) {
Point* p = (Point*) ptr;
p->y = y;
}
int main() {
Point* p = create_point(1, 2);
set_point_x((LPVOID) p, 3);
set_point_y((LPVOID) p, 4);
printf("(%d, %d)\n", p->x, p->y);
destroy_point(p);
return 0;
}
```
在这个示例中,我们定义了一个 Point 结构体,并使用 create_point 函数来创建一个 Point 实例。我们还定义了 set_point_x 和 set_point_y 函数来分别设置 Point 实例的 x 和 y 值。这两个函数都接受一个 LPVOID 类型的指针参数,该参数指向 Point 实例。在函数内部,我们将这个指针转换为 Point* 类型,并修改 Point 实例的成员。最后,我们使用 destroy_point 函数来销毁 Point 实例。
阅读全文