标题: c语言判断一个值是否变化是用全局变量还是静态局部变量来保存该值 [打印本页]

作者: anksy    时间: 2019-10-12 19:22
标题: c语言判断一个值是否变化是用全局变量还是静态局部变量来保存该值
本帖最后由 anksy 于 2019-10-12 19:24 编辑

小弟正在自学C语言。有个问题想请大家帮问解答一下。
c语言判断一个值是否变化是用全局变量还是静态局部变量来保存该值?如果用上了全局变量或者静态局部变量,那么该函数是不是就变成了不可重入函数?
例如
1:
unsigned int i = 0;
unsigned int a = 0;


void fun()
{
   i++;
  if(i != a)
  {
     a = i;
  }
}
///////////////////////////////
2:
unsigned int i = 0;


void fun()
{
   static unsigned int a = 0;
   i++;
  if(i != a)
  {
     a = i;
  }
}
这里的a就用来保存i的值。那么是用那种方式比较好?或者两种都不可取。另外这个fun()是不是就变成了不可重入函数?



作者: devcang    时间: 2019-10-13 09:55
一般用全局变量,容易查找。。。。
作者: wrs    时间: 2019-10-13 10:59
局部可以引用和改变全局变量,局部外不能引用和改变局部变量。只要遵循这个就可以了,其他不用过于纠结
作者: 19465863041    时间: 2019-10-13 11:08
用全局,全局容易在主函数中直接找到其值
作者: q1114785858    时间: 2019-10-13 11:34
第一种方式会好点,第二种变量a虽然保存了i的值,但是没办法从函数外面读取,没有太大意义
作者: anksy    时间: 2019-10-13 12:23
谢谢大家的回复。昨晚自己也思考了一晚。@wrs 这位兄弟说的很对。发现自己太过于纠结于书本字面上的意思了。其实存在即是是合理,只要在编写程序时。知道自己在做什么。灵活运用规则。
作者: qhdx    时间: 2019-10-13 16:35
用全局,全局容易在主函数中直接找到其值
作者: chinayihui    时间: 2019-10-13 17:11
使用第一个方法,用全局变量比较方便
作者: hsgzfhj    时间: 2019-10-13 20:09
用全局变量先看,看完了如果此变以量不需要改为局部变量。这样最方便了。
作者: arm黑    时间: 2019-10-13 20:47
全局和静态局部都可以,但是如果用了全局,就是要让其它模块也能够修改和访问这个值.而如果用了静态局部,就只是想控制在本函数中.比如该函数首次运行的标识,就可以用静态局部的方式保存.这样本函数外的程序就访问不到这个标识,而这个标识又可以决定函数运行的不同处理分支.
作者: 张谋益    时间: 2019-10-13 21:21
用全局变量,全局变量容易在主函数中直接找到其值
作者: adaman    时间: 2019-10-13 22:02
用全局变量吧

作者: seaso    时间: 2019-10-14 11:00
一般用静态局部变量;全局变量容易被其它函数修改




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1