C语言中static是做什么用的?

看网上说法不一。如果是为程序中的通用变量定义的话(就像VB中的Public一样)。那指针不是也可以么?还有。在main()之外定义变量不是也可以整个程序通用么?... 看网上说法不一。如果是为程序中的通用变量定义的话(就像VB中的Public一样)。那指针不是也可以么?还有。在main()之外定义变量不是也可以整个程序通用么? 展开
 我来答
帐号已注销
推荐于2017-09-18
帐号已注销
采纳数:469 获赞数:1551
北京邮电大学硕士毕业。在工作上熟练使用英语跟同事作口头、电子邮件交流。习惯阅读英文原版书籍。

向TA提问 私信TA
展开全部

最主要有两点用途。

  1. 让一个变量长期有效,而不管其是在什么地方被申明。比如:

          int fun1()

          {

              static int s_value = 0;

              ....

          }

         那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。

 

2.避免多个文件使用了相同的变量名而导致冲突

 比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了。

xj349940304
推荐于2017-09-21 · TA获得超过959个赞
知道小有建树答主
回答量:296
采纳率:60%
帮助的人:189万
展开全部
这个应该是个静态存储,在一次循环之后,带入的值是不会被释放的,也就是说第一次循环结果是多少第二次循环还是多少,不会变成题目初始值。
追问
那跟#define又有什么区别呢?
追答
使用#define预处理宏定义命令,它的具体作用,就是方便程序段的定义和修改。
例如,如果说你在做一个项目,这个项目的代码很长,而且基本上裏面的同一个常量N就占了很多行,如果说你要对这个常量N的值进行修改,而在程序的开始没有定义一个#define N,那么改起来就会很麻烦至于专业的,我就不太清楚了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuchao429
2011-03-29
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
在程序最开始处main()之前定义的的变量为全局变量,存放在内存中的数据区,在与该程序有关的所有文件都可以使用该变量,但是若是其他地方的变量 加了个static 也变为全局变量,声明周期跟main()之前定义的一样长,也在数据区存放,但是唯一的差别就是该变量只能这个文件中使用,其他没有差别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一骑当后
2015-07-05 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306446
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部
  在C语言中,static的作用有三个,分别如下:
  1、隐藏;
  当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
  2、保持变量内容的持久;
  存储在静态数据区的变量会在程序刚开始运行时就完成初 始化,也是唯一的一次初始化。
  3、默认初始化为0;
  在静态数据区,内存中所有的字节默认值都是0x00,某些 时候这一特点可以减少程序员的工作量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-03-29 · TA获得超过864个赞
知道答主
回答量:162
采纳率:0%
帮助的人:126万
展开全部
static和extern定义的变量都是在静态存储区分配存储单元的。在C语言中可以同时建立多个文件,可将不让其他文件引用的本文件中的全局变量都加上static,成为静态全局变量,对其他文件屏蔽起来,而extern的功能刚好相反。
详细的功能可以参考c课本的作用域与存储类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式