【发布时间】:2014-02-13 05:40:46
【问题描述】:
我找到了如何在 struct 中制作函数指针的答案,但我仍然很好奇 它的运作。有人能解释清楚吗?
这是我的问题,
这段代码运行正常,但是...
char func_1(void);
char func_2(char);
struct mStruct
{
char name[100];
int age;
char (*func_1)(void);
void (*func_2)(char);
};
void init_struct(struct mStruct *pStruct)<-why this void function is necessary?
{
if(pStruct == NULL) {
pStruct = malloc(sizeof(struct mStruct));
}
(*pStruct).age = 25;
(*pStruct).func1 = &func1;
(*pStruct).func2 = &func2;
}
char func_1(void)
{
... ;
}
char func_2(char)
{
... ;
}
我已经尝试消除init_struct 功能,但所有尝试都失败了。我的 gcc 编译器只接受它。有谁知道另一种不使用函数来初始化结构的方法
或者为什么它只能作为void 函数接受?
【问题讨论】:
-
您还没有向我们展示您的其余代码。里面有东西在调用 init_struct(),否则就不需要了。
-
(*pStruct).age之类的代码可以换成pStruct->age,更清晰。 -
该代码不应该编译;您在定义中将其称为
func_1,但在初始化函数中将其称为func1。 -
我几乎不敢提及该函数中的内存泄漏。轮子用完了要脱落。
-
“没有泄漏内存,因为我有足够的内存”是一个非常错误的说法。内存泄漏是您的代码的一个非常严重的问题。时期。修理它。现在。
标签: c function pointers struct