假设我有一个像下面这样的结构......
typedef struct {
int WheelCount;
double MaxSpeed;
} Vehicle;
...我有一个这种类型的全局变量(我很清楚全局变量的陷阱,这是针对嵌入式系统的,我没有设计它,但不幸的是必要的邪恶。)直接访问结构的成员还是通过指针访问结构的成员更快?即
double LocalSpeed = MyGlobal.MaxSpeed;
或
double LocalSpeed = pMyGlobal->MaxSpeed;
我的任务之一是简化和修复最近继承的嵌入式系统。
最佳答案
一般来说,我会选择第一个选项:
double LocalSpeed = MyGlobal.MaxSpeed;
这减少了一次取消引用(您没有找到指针,然后取消引用它以到达它的位置)。它也更简单、更易于阅读和维护,因为除了结构之外,您不需要创建指针变量。
话虽这么说,但我认为您看到的任何性能差异都不会引人注意,即使在嵌入式系统上也是如此。两者都将是非常非常快的访问时间。
关于C 指针与结构的直接成员访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329096/