Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的结构数组或数组结构_C_Arrays_Structure - Fatal编程技术网

C语言中的结构数组或数组结构

C语言中的结构数组或数组结构,c,arrays,structure,C,Arrays,Structure,在这两个选项中,哪一个是最快/消耗内存最少的选项: struct { int index; char string[10]; } a[10]; 或 第一种方法显然更易于使用和实现。我还必须提到,我将动态地分配它们。但是,哪一个会跑得更快或最省时呢 谢谢大家! 不要担心过早优化。使用易于理解/维护的工具。因为这是C,所以性能差异几乎不明显 由于上面的struct的sizeof是8,而不是5(由于填充)(前提是int是32位),所以第二个可能会更小 至于哪个更快,我认为这取决于你在做什么;第二个是

在这两个选项中,哪一个是最快/消耗内存最少的选项:

struct {
int index;
char string[10];
} a[10];

第一种方法显然更易于使用和实现。我还必须提到,我将动态地分配它们。但是,哪一个会跑得更快或最省时呢


谢谢大家!

不要担心过早优化。使用易于理解/维护的工具。因为这是C,所以性能差异几乎不明显

由于上面的struct的sizeof是8,而不是5(由于填充)(前提是int是32位),所以第二个可能会更小

至于哪个更快,我认为这取决于你在做什么;第二个是面向数据设计的典型示例(不要与数据驱动设计混淆)。请参阅本文:

编辑:尽管如此,我同意米兰的观点(另一个答案)——不要过早地优化,或者根本不优化。两者都足够快;我之前没有强调这一点,因为我认为嵌入式系统可能需要它,这可能很重要

struct {
    int index;
    char string[10];
} a[10];
将为每个
a[]
项引入填充

第二种解决方案将只引入一次填充


如果您打算在
a[]
中分配大量项目,那么您将为拥有一个更大的域而付出代价(更不用说额外的取消引用)。

根据问题中未提供的信息,可能存在微小的差异(例如,您使用什么样的C实现,包括什么编译器选项,更重要的是,您实际对该结构做了什么).Speed不是C结构的一个属性。我能想到的最常见的事情是,在很多实现中,前者会稍微大一点,可能是160字节,而不是140字节。不过,如果真的检测到任何性能差异,祝你好运。为什么在第二个结构中使用索引数组?如果你想解决strin的某个特定元素g那么你只需要知道数组的范围。存储大小不是更简单吗?前两句为+1,后两句为-1。只要项目数固定在10,这在任何语言中都不会明显,但当这个数字变大时,引用效果的局部性就会发挥作用,因此性能取决于strongl在这项任务上,我很紧张。
struct {
    int index;
    char string[10];
} a[10];