【发布时间】:2021-03-31 15:43:43
【问题描述】:
我想在 C 中创建一个类似于课程注册的结构。为此,我使用了 struct 而不是 table。
STUDENT *createStudent(){
return (STUDENT *) malloc(sizeof(STUDENT));
}
TEACHER *createTeacher(){
return (TEACHER *) malloc(sizeof(TEACHER));
}
COURSE *createCourse(){
return (COURSE *) malloc(sizeof(COURSE));
}
COURSEREGISTRATION *createCourseRegistration(){
return (COURSEREGISTRATION *) malloc(sizeof(COURSEREGISTRATION));
}
我想将这些函数传递给带有函数指针的变量。喜欢;
void *createNode(int choise){
void (*fp[]) () = {createStudent, createTeacher, createCourse, createCourseRegistration};
return (fp[choise] ());
}
我想用 func 指针 做 malloc 并在这个函数(main func)中得到一个错误;
STUDENT *studentHead = NULL;
void *temp = studentHead;
temp = createNode(0);//Zero for student
我没有清楚地理解 func 指针。我该怎么办?我哪里错了?或者我可以在这种情况下使用 func 指针吗?
谢谢
编辑: 我解决了这样的问题;
#define CREATESTUDENT 0
#define CREATETEACHER 1
#define CREATEDCOURSE 2
#define CREATECOURSEREGISTRATION 3
void createNode(void **temp, int choise){
switch(choise){
case CREATESTUDENT:
*temp = (STUDENT *) malloc(sizeof(STUDENT));
break;
case CREATETEACHER :
*temp = (TEACHER *) malloc(sizeof(TEACHER));
break;
case CREATEDCOURSE :
*temp = (COURSE *) malloc(sizeof(COURSE));
break;
case CREATECOURSEREGISTRATION :
*temp = (COURSEREGISTRATION *) malloc(sizeof(COURSEREGISTRATION ));
break;
}
}
并使用了调用函数;
STUDENT *temp = studentHead;
createNode(&temp, CREATESTUDENT);
【问题讨论】:
-
你遇到了什么错误
-
函数必须具有返回类型
void *才能按照您在createNote中的使用方式使用 -
你可能会觉得Do I cast the result of malloc?很有趣。
-
@P__JsupportswomeninPoland [错误] void 值没有被忽略,因为它应该被忽略
标签: c function pointers function-pointers