c语言结构体池简单实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#define __STDC_WANT_LIB_EXT1__ #define LIST_SIZE 10
typedef struct student
{
int number;
char name[10];
int age;
}student;
student *list[LIST_SIZE];
void initi(void);
student *get_stu(void);
void return_stu(student **stu);
void print_info(const student *stu); void free_list();
int main(void)
{
initi();
student *Tony=get_stu();
Tony->number=1;
strcpy_s(Tony->name,10,"Tony");
Tony->age=16;
print_info(Tony);
free_list();
return 0;
}
//初始化结构体池
void initi(void)
{
for(int i=0;i list[i]=NULL; } //从结构体池获取结构体 student *get_stu(void) { for(int i=0;i if(list[i]!=NULL) { student *temp=list[i]; list[i]=NULL; return temp; } student *temp=(student*)malloc(sizeof(student)); return temp; } //将结构体返回结构体池 void return_stu(student**stu) { for(int i=0;i if(list[i]==NULL) { list[i]=*stu; *stu=NULL; return ; } free(*stu); } //打印学生信息 void print_info(const student *stu) { printf("Number: %10d\n",stu->number); printf("Name: %12s\n",stu->name); printf("Age: %13d\n",stu->age); } //释放结构体池内存 void free_list(void) { for(int i=0;i if(list[i]!=NULL) free(list[i]); }