c语言中的多用static好吗?

> 问题详情
C语言中,凡未指定存储类别的局部变量的隐含存储类别是()。A.自动(auto)B.静态(statiC)C.外部(exte
悬赏:0&答案豆
提问人:匿名网友
发布时间:
C语言中,凡未指定存储类别的局部变量的隐含存储类别是( )。A.自动(auto)B.静态(statiC)C.外部(extern)D.寄存器(register)请帮忙给出正确答案和分析,谢谢!
网友回答(共1条)
匿名网友&&&&lv1&&&&提问收益:0.00&答案豆
我有更好的答案
您可能感兴趣的试题
1以下叙述中不正确的是(&&)。A.预处理命令行都必须以#号开始,结尾不加分号B.在程序中凡是以#号开始的语句行都是预处理命令行C.C程序在执行过程中对预处理命令进行处理D.预处理命令可以放在程序中的任何位置2以下程序的输出结果是(&&)。&&#include<stdio.h>&&#define F(x)2.84+x&&#define w(y)printf("%d",(int)(y))&&#define P(y)w(y)&&main()&&{int x=2;&&P(F(5)*x);&&}A.12B.13C.14D.16
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……C语言:利用static静态变量统计函数被调用的次数 | XCoder StudioC语言中static 函数除了不能再外部被调用外和普通函数还有什么区别呢
iThinks:本文来自CSDN论坛的讨论,观点不一定全对,但值得从这几个方面考察static。
C程序一直由下列部分组成:
&&&&& 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;&&&
& 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。&&&
& 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。&&&&
& 4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。&&&&&
& 5)堆——动态存储分。
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。
&& 1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
& 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
&& 3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。
定义全局静态变量的好处:
&1&不会被其他文件所访问,修改
&2&其他文件中可以使用相同名字的变量,不会发生冲突。
局部静态变量
在局部变量之前加上关键字static,局部变量就被定义成为一个局部静态变量。
& 1)内存中的位置:静态存储区
& 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
& 3)作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域随之结束。
注:当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。
当static用来修饰全局变量的时候,它就改变了全局变量的作用域(在声明他的文件之外是不可见的),但是没有改变它的存放位置,还是在静态存储区中。
3. 静态函数
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。
& 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
定义静态函数的好处:
&1& 其他文件中可以定义相同名字的函数,不会发生冲突
&2& 静态函数不能被其他文件所用。 存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态存储期。 auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
关键字extern和static用来说明具有静态存储期的变量和函数。用static声明的局部变量具有静态存储持续期(static storage duration),或静态范围(static extent)。虽然他的值在函数调用之间保持有效,但是其名字的可视性仍限制在其局部域内。静态局部对象在程序执行到该对象的声明处时被首次初始化。
由于static变量的以上特性,可实现一些特定功能。
1. 统计次数功能
声明函数的一个局部变量,并设为static类型,作为一个计数器,这样函数每次被调用的时候就可以进行计数。这是统计函数被调用次数的最好的办法,因为这个变量是和函数息息相关的,而函数可能在多个不同的地方被调用,所以从调用者的角度来统计比较困难。
C语言中使用静态函数的好处:
&&&&& 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。
&&&&& 关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
c语言中static的语义1.static变量:1).局部a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。2).全局全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域,
即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。2.static函数(也叫内部函数)只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。区别于一般的非静态函数(外部函数)&&&& static在c里面可以用来修饰变量,也可以用来修饰函数。&&&&&&&& 先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不包含对,不要弄混。
来源:http://bbs.csdn.net/topics/
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
1.全局变量
在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量,则有:
1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在)
2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化)
3)作用域:全局静态变量 ...
先列个提纲,有空再详述吧. 1. 用于声明函数的可视范围. 使用static 声明的函数只能在本编译单元内可见,即本文件.此时与extern相对. 2. 用于声明局部变量.
用static声明的局部变量在第一次调用所在函数时被初始化一次,退出该函数后static变量被保护,即下次调用该函数时,时入该函数时该变量的值与上次调用退出时的值相同.stati ...
C语言中static关键字的作用 华清远见
北京海淀区 张俊浩 一.C源程序编译后的可执行文件(elf)存储空间布局 1)正文段--CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)--在 ...
c语言中static变量
分类:默认分类 |
标签:|字号大中小 订阅 static静态变量声明符. 在声明它的程序块,子程序块或函数内部有效,值保持,在整个程序期间分配存储器空间,编译器默认值0. 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性. 2.为什么要引入static? 函数内部定 ...
/article-31891-1.html
一.c程序存储空间布局 C程序一直由下列部分组成: 正文段--CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里. 非初始化数据段(bss段)--在程序中没有初始 ...
一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量:内核将此段初始化为0. 4)栈——增长方向:自顶向下增长:自动 ...
原地址:/sunshine_linting/blog/static// 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作 ...
一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段--CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)--在程序中没有初始化的全局变量:内核将此段初始化为0.
4)栈--增长方向:自顶向下增长:自 ...C语言中多用static好吗?_百度知道
C语言中多用static好吗?
这样利于程序的测试和维护么?
提问者采纳
空间才会被回收的static 的变量的生命周期是直到你的,会使得变量一直增多.c文件代码结束,如果使用过多
提问者评价
看大家都赞同那我就选先到的吧!突然发现没分数给了-_-!!!!
来自团队:
其他类似问题
为您推荐:
其他5条回答
其它源文件不能使用,这个变量相当于全局变量、定义一个c源文件函数时,加static表示该函数是本源文件私有,退出函数时不会释放内存,加static表示该变量是本源文件私有,很明显第2,也是模块化编程的必然、3两点的应用是非常有必要的这个问题首先要了解static的含义、定义一个c源文件全局变量时;2,进入函数时变量值保存:1,其它源文件不能使用;3、定义在某个函数内部的。从以上定义
看需要而用,如某个变量在你的子程序中多次调用需要记忆上次的值就需要用。某个文件内的函数或全部变量不想被外部调用使用,需要用,防止被以外使用。
不好,static 的变量的生命周期等同于程序的整个生命周期,所以程序不结束,系统是不会释放static 变量的内存空间的。如果使用过多,会占用大量内存,不建议使用。
同意一楼,用多了不好
static的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于C语言的static 又涨姿势了
10:24:23&&&来源:eefocus &&
最近学习一段代码,关于求平均值过滤的,过去使用时,一般是这样算,先一下子读出10个值来,求和再除以10,然后返回平均值。
今天学到了一种新的求平均值法,不用一下子读出10个来,而是正常读,只不过是以前读的都会记录保存下来,然后通过移位来更新这10个数据,
简单来说 如果 采集的数据为(2.0,2.1,2.5,2.3,2.5,2.2,2.5,2.6,5.9,2.7),那么下次采集为 2.5,那么就会将2.0丢掉,2.1为第一位,依次移位实现数据的更新。感觉巧妙之级。
这种方法的代码实现如下&
/*******************************************************************************
* Function Name &:
int _filter(int m)
* Description & &:&
* Input & & & & &:&
* Output & & & & : None
* Return & & & & :&
* Attention & : None
*******************************************************************************/
static int _filter(int m)
& static int flag_first = 0, _buff[10],
& const int _buff_max = 10;
& if(flag_first == 0)
& & flag_first = 1;
& & for(i = 0, sum = 0; i < _buff_ i++)
& & & _buff[i] =
& & & sum += _buff[i];
& & sum -= _buff[0];
& & for(i = 0; i < (_buff_max - 1); i++)
& & & _buff[i] = _buff[i + 1];
& & _buff[9] =
& & sum += _buff[9];
& & i = sum / 10.0;
一开始以为 else 后边的不会执行,后来我错了。
static有一个特点
特点: static局部变量的&记忆性&与生存期的&全局性&
所谓&记忆性&是指在两次函数调用时, 在第二次调用进入时, 能保持第一次调用退出时的值.&
示例程序一
void staticLocalVar()
&static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作
&cout<<"a="<<a<<
int main()
&staticLocalVar(); // 第一次调用, 输出a=0
&staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1
&return 0;
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
C语言相关资源
static相关资源
编辑:什么鱼
本文引用地址:
本周热门资源推荐
EEWORLD独家}

我要回帖

更多关于 c语言中的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信