相同的功能,但传递给函数的参数不同
same function but different parameter passing to function
struct student {
char *s_name;
struct student_id s_id;
/** Number of references to this student. */
unsigned int s_ref;
/** Transcript (singly-linked list, NULL terminator). */
struct transcript_entry *s_transcript;
/** Whether or not this student has completed his/her program. */
student_complete s_complete;
};
struct student* student_grad_create(const char *name, size_t namelen,
struct student_id, int phd);
struct student* student_undergrad_create(const char *name, size_t namelen,
struct student_id);
学生分为三种,硕士生、博士生和本科生。我需要实现一个函数,调用:
int student_add_entry(struct student *, struct transcript_entry *);
不知道如何判断学生类型?
我应该执行以下操作吗?
int student_add_entry(struct student *undergrad_create, struct transcript_entry *){}
int student_add_entry(struct student *grad_create, struct transcript_entry *){}
谢谢。
您可以将 student_type
字段添加到结构
struct student {
char *s_name;
struct student_id s_id;
/** Number of references to this student. */
unsigned int s_ref;
/** Transcript (singly-linked list, NULL terminator). */
struct transcript_entry *s_transcript;
/** Whether or not this student has completed his/her program. */
student_complete s_complete;
enum student_type s_type;
};
你会有一个enum
喜欢
enum student_type
{
UndergraduateStudent,
MasterStudent,
PHDStudent
};
创建 struct student
的实例时,您将设置 s_type
字段,然后在其他任何地方使用 s_type
来确定学生的类型。
我还会编写一个通用函数来创建 struct student
的实例并向其传递所有可能的参数,如果您想要方便,您还可以为每个特定类型创建一个函数,您可以在其中传递通用函数的默认参数。
我正在处理一些学生注册系统问题。
1. 学生类型分为三种
2.本科生50分及格,硕士和博士65分及格
3.本科生必须完成40门课程,硕士生5门,博士生2门。
这是我需要实现的三个功能。
'
下面是 transcript_entry:
的结构
struct transcript_entry {
enum faculty te_faculty;
unsigned int te_number;
unsigned int te_grade;
/** Number of references to this entry. */
unsigned int te_ref;
/** Next entry in the singly-linked list (or NULL terminator). */
struct transcript_entry *te_next;
};
我实现了以下功能:
struct transcript_entry* transcript_entry(enum faculty faculty, unsigned int course_number, unsigned int grade){
struct transcript_entry *trans_entry;
trans_entry = malloc(sizeof(struct transcript_entry));
trans_entry->te_faculty = faculty;
trans_entry->te_number = course_number;
trans_entry->te_grade = grade;
trans_entry->te_ref = 1;
trans_entry->te_next = NULL;
return trans_entry;
}
/** Deallocate a @ref transcript_entry. */
void transcript_entry_free(struct transcript_entry *trans_entry){
free(trans_entry);
}
/** Increment a @ref transcript_entry's refcount. */
void tehold(struct transcript_entry *trans_entry){
trans_entry-> te_ref++;
}
我看了一些关于引用计数的教程。我不知道我的代码是否有意义。那么这意味着增加引用计数++,还是减少te_ref--;
struct student {
char *s_name;
struct student_id s_id;
/** Number of references to this student. */
unsigned int s_ref;
/** Transcript (singly-linked list, NULL terminator). */
struct transcript_entry *s_transcript;
/** Whether or not this student has completed his/her program. */
student_complete s_complete;
};
struct student* student_grad_create(const char *name, size_t namelen,
struct student_id, int phd);
struct student* student_undergrad_create(const char *name, size_t namelen,
struct student_id);
学生分为三种,硕士生、博士生和本科生。我需要实现一个函数,调用:
int student_add_entry(struct student *, struct transcript_entry *);
不知道如何判断学生类型?
我应该执行以下操作吗?
int student_add_entry(struct student *undergrad_create, struct transcript_entry *){}
int student_add_entry(struct student *grad_create, struct transcript_entry *){}
谢谢。
您可以将 student_type
字段添加到结构
struct student {
char *s_name;
struct student_id s_id;
/** Number of references to this student. */
unsigned int s_ref;
/** Transcript (singly-linked list, NULL terminator). */
struct transcript_entry *s_transcript;
/** Whether or not this student has completed his/her program. */
student_complete s_complete;
enum student_type s_type;
};
你会有一个enum
喜欢
enum student_type
{
UndergraduateStudent,
MasterStudent,
PHDStudent
};
创建 struct student
的实例时,您将设置 s_type
字段,然后在其他任何地方使用 s_type
来确定学生的类型。
我还会编写一个通用函数来创建 struct student
的实例并向其传递所有可能的参数,如果您想要方便,您还可以为每个特定类型创建一个函数,您可以在其中传递通用函数的默认参数。
我正在处理一些学生注册系统问题。 1. 学生类型分为三种 2.本科生50分及格,硕士和博士65分及格 3.本科生必须完成40门课程,硕士生5门,博士生2门。
这是我需要实现的三个功能。 ' 下面是 transcript_entry:
的结构struct transcript_entry {
enum faculty te_faculty;
unsigned int te_number;
unsigned int te_grade;
/** Number of references to this entry. */
unsigned int te_ref;
/** Next entry in the singly-linked list (or NULL terminator). */
struct transcript_entry *te_next;
};
我实现了以下功能:
struct transcript_entry* transcript_entry(enum faculty faculty, unsigned int course_number, unsigned int grade){
struct transcript_entry *trans_entry;
trans_entry = malloc(sizeof(struct transcript_entry));
trans_entry->te_faculty = faculty;
trans_entry->te_number = course_number;
trans_entry->te_grade = grade;
trans_entry->te_ref = 1;
trans_entry->te_next = NULL;
return trans_entry;
}
/** Deallocate a @ref transcript_entry. */
void transcript_entry_free(struct transcript_entry *trans_entry){
free(trans_entry);
}
/** Increment a @ref transcript_entry's refcount. */
void tehold(struct transcript_entry *trans_entry){
trans_entry-> te_ref++;
}
我看了一些关于引用计数的教程。我不知道我的代码是否有意义。那么这意味着增加引用计数++,还是减少te_ref--;