想知道以下两个位(分别标记为方法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/