结构或指针的结构?
什么是最好的/最快的方式?结构或指针的结构?
结构结构的:
struct Sheet{
u8 status; // to check if empty ?
u8 reserve0;
u8 reserve1;
u8 reserve2;
struct words words[1024];
};
struct Book {
int id;
struct Sheet sheet[64];
};
在这种情况下,如何检查sheet
表是空的或不?我需要为每张表添加status
?
或
结构
struct Sheet{
u8 reserve0;
u8 reserve1;
u8 reserve2;
struct words words[1024];
};
struct Book {
int id;
struct Sheet* sheet[64];
};
的指针表,我不需要使用malloc
,因为它们是固定的表。
在结构结构的,我可以通过设置status
但指针初始化结构,我可以bookinstance.sheet[] = NULL
或类似这样的东西初始化。
我很迷茫与pointers
,struct
和malloc
。我来自Ruby
...
要明确:
我想不会超过64 sheet
我book
实例。也许只有3将被使用或64 ...但我希望能够添加它们,并检查它们从0到63的数字。
在一定程度上它取决于你的意思是“更快”。 你的代码如何与这些元素交互会改变这一点。一般来说;但是,很少有时候您可能会看到CPU时间的显着影响。
请注意,在选项2中,Book只分配一个指针数组,因此您将不得不添加代码(和开销)为要指向的指针分配表单。
只要您不打算在书籍*享某些表格,第一个选项看起来会更清晰。
另外,如果您正在复制书籍,选项2会更快,因为您只会复制指针而不是整个Sheet结构。
谢谢,当我添加一张纸后,我不会删除任何东西,只需更改参数/状态即可。无论如何,对于我的情况,两种选择都可以,但第二种选择可能更适合编程,因为1 - 如果我复制,只有指针列表,2 - 可以通过仅检查指针而不是用于循环的“表[i] .status' –
不客气,喜欢编码。有一点,要小心指针,它们为空指针引用和内存泄漏提供了很多机会。做很多空检查,并确保当你删除一本书或超出范围时,为他们释放内存。 – markshancock
我也很迷茫......你想让每本书精确地包含64页,其中一些可能是空的(无效)?在这种情况下 - 是的,你可以维护一个64页的指针数组,如果它们中的任何一个都是空的(无效的),那么将它设置为NULL。 –
然后我会用指针列表去。更好的初始化。 –