【发布时间】:2019-12-02 21:56:45
【问题描述】:
假设我们有这个结构:
typedef struct foo {
int (*func)(char *param);
} foo;
我们有这个原型:
void bar(foo *f){
char *t = something
int a = f->func(t)
do stuff with a
}
但这在初始化 int a 时会出现段错误。我也试过int a = f->func(t),但这也会导致段错误
我叫bar by
foo *baz = malloc(sizeof(foo));
baz->func = &somefunction;
bar((foo *) &baz);
【问题讨论】:
-
在使用
struct成员之前,您必须像其他成员一样初始化它。 -
foo baz = initializing it。有你的问题。但更严重的是,向我们展示实际代码,因为我们无法指出我们看不到的代码中的问题。请看How to create a Minimal, Reproducible Example -
我确实初始化了它。我编辑了我的帖子
-
请显示实际代码,即显示问题的Minimal Reproducible Example。
void bar(foo *f);不会编译。 -
现在你只是在编随机码。
foo不是函数指针类型。第四次 - 向我们展示实际代码作为最小可重现示例 - 也就是说,构建一个简单的完整示例,我们可以自己复制并运行以查看问题。
标签: c pointers dereference