c - 使用结构数组与结构指针数组的优缺点是什么?

标签 c arrays pointers struct structure

我正在尝试决定我应该使用哪个。

指向我能想到的结构的指针的优点。

  • 如果您不使用数组的所有元素,则浪费的空间会更少。
  • 交换数组元素时较少听到

双方还有其他利弊吗?

最佳答案

这些方法还有一些其他差异:

  • 指针数组方法减少了调整数组大小的开销;
  • 指针数组方法为您提供“空”/“未使用”值 (NULL)。如果这在您的应用程序中在语义上是有效的,那么这是一个优势(您不必更改您的 struct 本身来表达这一点);
  • 指针数组方法允许数组的多个元素引用相同的struct 而不是副本。同样,如果这种情况对您的应用程序来说在语义上是合理的,那么这只是一个优势;
  • 结构数组方法提供了更多的引用局部性(struct 在数组中靠得很近,在内存中也靠得很近,这在某些情况下可能是一种性能优势);<
  • 对于非常大量的项,结构数组方法需要一个大的连续内存块,如果您的进程地址空间变得碎片化,这可能不可用。

关于c - 使用结构数组与结构指针数组的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8997729/

相关文章:

c++ - C/C++ 中的非保留字符

python - PyTypeObject 的静态工厂

c - 尽管已指定,但打印未显示在打印数组中

arrays - 找到两个数组的所有可能距离

java - 尝试将字符串添加到一个字符串列表,但最终将字符串添加到两个字符串列表。

java - Java中linkedList实现的删除方法

C++使用指针反转字符串

c - 没有 strcmp() 的字符串比较

PHP 2 数组 - 将两个数组中存在的值合并到一个数组中

pointers - Golang 编辑从 main() 到函数的 struts 数组