我已经对如何在 C 中使用函数指针进行了一些研究,并且我正在尝试做一些面向对象的模型。因此,要对这样的事情进行建模,我被告知我必须将函数指针添加到结构中,以便它们成为一种“对象”。
由于我对 C 编程很陌生,这个问题可能看起来有点愚蠢(或者很容易回答),但是在 Internet 上,我只是找到了有关 C++ 的示例,这不是我要搜索的内容。
这是我想展示的一个示例,以便您可以轻松理解我的问题:
try.h 文件:
struct thing {
void (*a)(int, int);
};
void add(int x, int y);
try.c 文件:
#include <stdio.h>
#include <stdlib.h>
#include "try.h"
void add(int x, int y) {
printf("x + y = %d\n", x+y);
}
int main(int argc, char* argv[]) {
struct thing *p = (struct thing*) malloc(sizeof(struct thing));
p->a = &add;
(*p->a)(2, 3);
free(p);
p = NULL;
return 0;
}
作为一个例子,我想要 always x = 2
,所以函数指针struct thing
将是这种指针:void (*a)(int)
并且void (*a)(int, int)
不再是。
x = 2
将函数指针传递给结构(行)时如何绑定参数p->a = &add;
?这在C语言中甚至可能吗?在 C++ 中我见过类似的东西std::bind
,但我无法在 C 中做到这一点。