找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5508|回复: 12
收起左侧

c语言判断一个值是否变化是用全局变量还是静态局部变量来保存该值

  [复制链接]
ID:389903 发表于 2019-10-12 19:22 | 显示全部楼层 |阅读模式
本帖最后由 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()是不是就变成了不可重入函数?


回复

使用道具 举报

ID:277550 发表于 2019-10-13 09:55 | 显示全部楼层
一般用全局变量,容易查找。。。。
回复

使用道具 举报

ID:623195 发表于 2019-10-13 10:59 | 显示全部楼层
局部可以引用和改变全局变量,局部外不能引用和改变局部变量。只要遵循这个就可以了,其他不用过于纠结
回复

使用道具 举报

ID:623196 发表于 2019-10-13 11:08 来自手机 | 显示全部楼层
用全局,全局容易在主函数中直接找到其值
回复

使用道具 举报

ID:619250 发表于 2019-10-13 11:34 | 显示全部楼层
第一种方式会好点,第二种变量a虽然保存了i的值,但是没办法从函数外面读取,没有太大意义
回复

使用道具 举报

ID:389903 发表于 2019-10-13 12:23 | 显示全部楼层
谢谢大家的回复。昨晚自己也思考了一晚。@wrs 这位兄弟说的很对。发现自己太过于纠结于书本字面上的意思了。其实存在即是是合理,只要在编写程序时。知道自己在做什么。灵活运用规则。
回复

使用道具 举报

ID:623337 发表于 2019-10-13 16:35 | 显示全部楼层
用全局,全局容易在主函数中直接找到其值
回复

使用道具 举报

ID:48207 发表于 2019-10-13 17:11 | 显示全部楼层
使用第一个方法,用全局变量比较方便
回复

使用道具 举报

ID:623259 发表于 2019-10-13 20:09 | 显示全部楼层
用全局变量先看,看完了如果此变以量不需要改为局部变量。这样最方便了。
回复

使用道具 举报

ID:623493 发表于 2019-10-13 20:47 | 显示全部楼层
全局和静态局部都可以,但是如果用了全局,就是要让其它模块也能够修改和访问这个值.而如果用了静态局部,就只是想控制在本函数中.比如该函数首次运行的标识,就可以用静态局部的方式保存.这样本函数外的程序就访问不到这个标识,而这个标识又可以决定函数运行的不同处理分支.
回复

使用道具 举报

ID:608164 发表于 2019-10-13 21:21 | 显示全部楼层
用全局变量,全局变量容易在主函数中直接找到其值
回复

使用道具 举报

ID:612140 发表于 2019-10-13 22:02 | 显示全部楼层
用全局变量吧
回复

使用道具 举报

ID:623734 发表于 2019-10-14 11:00 | 显示全部楼层
一般用静态局部变量;全局变量容易被其它函数修改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表