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

Mic*_*ael 4 c arrays struct pointers structure

我正在努力决定应该使用哪个.

指向结构的指针的优点,我可以从头脑中思考.

  • 如果不使用数组的所有元素,浪费的空间会减少.
  • 交换数组元素时少听不到

双方的任何其他专业人士/骗局?

caf*_*caf 5

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

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