gpt4 book ai didi

c - 通过使用指针传递函数来修改函数内的全局变量是一个好习惯吗?

转载 作者:行者123 更新时间:2023-11-30 16:35:23 28 4
gpt4 key购买 nike

globals.h
unsigned char csrf;
unsigned char srevf;
pcs.c
void PcsTxFlags(unsigned char*pCsrf, unsigned char*psrevf,
unsigned char penablef0,unsigned char penablef2,
unsigned char penablef4)
{
*pcsrf =penablef2 & (penablef0 ? 0:1);
*psrevf = penablef2 ^ penablef4;
}
main.c
int main(void)
{
PcsTxFlags(&csrf,&srevf,penablef0 ,penablef2 ,penablef4);
}

我得到了正确的结果。众所周知,不需要传递全局变量,并且可以在函数内部修改它而不传递它。因此,通过使用指针将全局变量作为参数传递来修改函数内部的全局变量是一个好习惯吗?

最佳答案

嗯,这并不是一个使用太频繁而成为实践的东西。全局变量正在被修改 - 无论你如何分散可以修改变量的点,它的所有缺点都会随之而来。(难以管理代码,跟踪错误等)。

然后我还要说,基于场景和函数中实现的功能 - 通过指针传递留下了重用函数的范围。如果您直接使用全局变量,那么再次使用它(函数)的范围就很小。有时这是需要的 - 例如您正在使用一个库进行 xml 解析。即使您将数据结构放置在全局中,您也必须通过调用提供的 api 来修改它。(传递全局变量的地址)。

使用太多全局变量来完成看似微不足道的工作也是不好的做法。现在这项琐碎的工作是主观的、有背景的。

关于c - 通过使用指针传递函数来修改函数内的全局变量是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48940178/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com