想知道以下两个位(分别标记为方法1和方法2)之间的区别是什么,与之相关的任何收益/风险,最后是一种更好的方法。

 typedef struct
 {
   int iAnInteger;
 } s_Thing;

 s_Thing sMine;

 void SomeFunction(int myInt)
 {
    /* Method 1 */
    s_Thing *pMine = &sMine;

    pMine->iAnInteger = 0;

    /* Method 2 */
    sMine.iAnInteger = 0;
 }


如前所述,优点/缺点和最佳做法是什么?

谢谢!

最佳答案

方法3:

void SomeFunction(int myInt, s_Thing* pWho)
{
    pWho->iAnInteger = 0;
}


更好,因为如果更改s_Thing实例的创建方式,将更易于维护。

您的其他两种方法都存在本地化问题:尝试限制用于修改全局范围内保存的数据的函数数。

关于c - 全局访问和指针访问之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47394358/

10-11 21:08