| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13287 人关注过本帖
标题:C语言中的静态变量有什么用
只看楼主 加入收藏
kusars
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2009-7-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
C语言中的静态变量有什么用
C语言中static 有什么作用
我在我的书中没找到这东西的作用
就是说这是静态变量就完了
本人菜鸟希望帮下
搜索更多相关主题的帖子: C语言 变量 静态 
2009-08-30 17:48
luoweijun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:138
注 册:2009-6-12
收藏
得分:5 
静态局部变量是为了再下一次进入其所属函数时,变量的值仍保持上一次的值
2009-08-30 17:56
coolskyboy
Rank: 2
等 级:论坛游民
帖 子:102
专家分:53
注 册:2007-4-7
收藏
得分:5 
就是一直在内存中保留它的值,不自动释放

2009-08-30 18:25
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:10 
去看看书 C Primer Plus 第十二章,看完你就全明白了。。。
还是建议你去看书,下面说的不一定表达得你能看得懂。
static有两种情况
1.具有内部链接的静态。。。静态存储时期,内部链接,文件作用域。
    这种方式定义的变量位于所有函数之外,
如:#include <stdio.h>
    static int number; //这种方式定义的变量number能被本文件内的任何函数使用。其他文件中的函数不可使用。
 
  int main(void)
    {……}
2.具有空链接的静态。。。静态存储时期,空链接,代码块作用域。
    这种方式定义的变量位于函数代码块内部,
如:#include<stdio.h>
    void fun(int ...);//fun函数原型
    int main(void)
    {
        static int n; //只在本main()函数内可见,对其他函数(如fun)不可见。
        ……
    }
    void fun(int ...)  //fun函数定义
    {
        static char ch; //仅仅本函数fun()内可见,对其他函数(如main)不可见
        ……
    }
再来说说上面的三个名词,存储时期,链接,作用域
作用域:
文件作用域:从定义该变量所在处到该变量所在文件结尾处。
代码块作用域:在代码块中定义的变量具有代码块作用域,(函数体,函数内部的复合语句都是代码块)
存储时期 分一下两种:
静态存储时期,是指一个变量在程序执行时期一直存在,直到程序结束。
动态存储时期,是指程序在执行包含一个变量的代码块时,将会为这个变量分配内存,当程序退出这个代码块时,将回收给它分配的内存。
链接:内部链接,空链接,外部链接
空链接: 代码块或者函数原型中的变量具有空链接,意思是他们只能为他们所在的代码块或者函数原型所使用,其他地方不能使用。
内部链接,外部链接是相对文件作用域来说的。
内部链接,是该变量只能被文件内部的函数使用。
外部链接,是该变量可以被其他文件中的函数使用。(如:做一个project时,会有很多文件,main.c  file1.c file2.c)
2009-08-30 20:04
kusars
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2009-7-26
收藏
得分:0 
多谢大侠们的指导 你们说的对我很有用
谢谢了
2009-08-30 23:19
huangxiancon
Rank: 2
等 级:论坛游民
帖 子:7
专家分:33
注 册:2009-8-30
收藏
得分:0 
static变量只初始化一次,这个挺关键的。
2009-08-30 23:34
fousfous
Rank: 1
等 级:新手上路
帖 子:57
专家分:1
注 册:2009-1-18
收藏
得分:0 
回复 6楼 huangxiancon
       static只能初始化一次  这一点很重要  有些人会出错  比如我  呵呵
2009-08-30 23:49
kusars
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2009-7-26
收藏
得分:0 
我也是看到一个调用程序一个变量是有static另个一没有每次调用时
我都赋初值 跟答案老对不上才来问的
2009-08-31 00:37
快速回复:C语言中的静态变量有什么用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020111 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved