#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义book结构体
typedef struct {
char *title;
char *author;
int year;
} book;
// 定义library结构体
typedef struct {
book *books;
int bookCount;
char *libraryName;
} library;
int main() {
// 在堆上创建book结构体实例并初始化
book *newBook = (book *)malloc(sizeof(book));
if (newBook == NULL) {
fprintf(stderr, "内存分配失败\n");
return 1;
}
newBook->title = (char *)malloc(strlen("示例书名") + 1);
if (newBook->title == NULL) {
fprintf(stderr, "内存分配失败\n");
free(newBook);
return 1;
}
strcpy(newBook->title, "示例书名");
newBook->author = (char *)malloc(strlen("示例作者") + 1);
if (newBook->author == NULL) {
fprintf(stderr, "内存分配失败\n");
free(newBook->title);
free(newBook);
return 1;
}
strcpy(newBook->author, "示例作者");
newBook->year = 2023;
// 创建library结构体并初始化
library newLibrary;
newLibrary.books = newBook;
newLibrary.bookCount = 1;
newLibrary.libraryName = (char *)malloc(strlen("示例图书馆") + 1);
if (newLibrary.libraryName == NULL) {
fprintf(stderr, "内存分配失败\n");
free(newBook->title);
free(newBook->author);
free(newBook);
return 1;
}
strcpy(newLibrary.libraryName, "示例图书馆");
// 使用完后释放内存
free(newBook->title);
free(newBook->author);
free(newBook);
free(newLibrary.libraryName);
return 0;
}