怎么定义一个动态数组

原因是:我现在大一,打算做一个图书馆管理系统做法:我打算用指针数组混合四维数组。四维数组存放着这本书的:书名,作者以及简介,位置,是否借出。每一个四维数组都是一个指针数组... 原因是:我现在大一,打算做一个图书馆管理系统
做法:我打算用指针数组混合四维数组。
四维数组存放着这本书的:书名,作者以及简介,位置,是否借出。
每一个四维数组都是一个指针数组的元素。
然后这个指针数组是一个动态的指针数组。
每当书借出去或者归还之后就把是否借出这一个四维数组里面的元素改变一下
对了这个做法可以吗?
展开
 我来答
cxwtc123
2014-04-14 · TA获得超过160个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:176万
展开全部

可能你对数组维度的理解有误。

一本图书的信息无论包含多少,只是一条记录,算 0维。所有图书也就是 一维。

例:

//! 定义图书结构 
struct Book
{
    char name[128];
    char author[64];
    char berief[256];
    char location[256];
    bool is_checkout;
};
//! 所有图书
struct AllBooks

    Book* books;
    unsigned int size;//图书数量
}

没必要用指针数组,图书可使用 books的下标访问 ,如:

AllBooks all_books;
books = malloc(sizeof(book)*16);//初始化 16 本图书的空间
all_books.book[0];//第一本图书


如果希望动态变化,可以考虑参照 vector 容器的内存增长策略,按照2^n 次增长

追问
这样做的话好像很方便啊,但是请问怎么保存数据呢?
追答

持久化到文件的方式可以是 直接操作文件 或者使用 内存映射文件。

如果是直接操作文件:

  1. 程序启动时从 文件初始化到内存

  2. 有修改操作(新增、修改、删除、借入借出等)保存到文件

如果使用内存映射文件:

  一但建立文件的内存映射,对内存的操作可以自动同步到文件

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式