我真的很喜欢这个。 ex17应该通过提供simple database来教我堆和栈内存的分配(我的问题是特定的,但是我会留在那里,以防万一您需要完整的代码)。关于数据库的某些设计决策的目的没有太多解释,这就是为什么我寻求帮助。
1)是必要还是仅仅是设计上的便利(约定)?
struct Address {
int id;
int set;
char name[MAX_DATA];
char email[MAX_DATA];
};
struct Database {
struct Address rows[MAX_ROWS];
};
struct Connection {
FILE *file;
struct Database *db;
};
我不确定为什么会有三个结构。代码中还有一些类似的表达式(希望您理解变量的名称)conn->db->rows[i]
。我的问题是其中三个是否必要?我的意思是,为什么我们需要一个连接结构?为什么不创建一个独立的FILE *file
事物并完全避免使用struct Database *db
指针呢?
2)也许这对我的第一个会有所帮助。在本练习的Extra credit
(即,自己做)部分中,有一个任务如下:Try reworking the program to use a single global for the database connection. How does this now version of the program compare to the other one?
那么这是否只是要求我重做管理该数据库的“三层结构”?
是,您只能有struct Adress
,指向数据库文件的全局FILE *
和用于存储数据的全局struct Adress rows[MAX_ROWS]
。但是,真实的数据库具有名称,关联的文件,权限等(您提供的示例非常简单)。