静态局部变量,C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有
来源:整理 编辑:智能门户 2023-08-18 08:56:54
本文目录一览
1,C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。
根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用(尤其是短名全局变量的变量名污染很严重),因此仍以采用局部静态变量为宜。
简单的说静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。
2,局部变量静态全局变量静态局部变量的区别和联系
局部变量与其它两个有本质区别。 局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。而另外两个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。也就是说,局部变量和其它两个,最明显的区别:1 生命周期不同2 分配时间不同3 分配位置不同。而另外两个,在这几项上是相同的,之间的区别在于作用域。静态全局变量,作用域为定义改变量的所在文件。而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束。局部变量与其它三个有本质区别。 局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。也就是说,局部变量和其它三个,最明显的区别:1 生命周期不同2 分配时间不同3 分配位置不同。而另外三个,在这几项上是相同的,之间的区别在于作用域。全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。静态全局变量,作用域为定义改变量的所在文件。而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束。
3,全局变量和静态局部变量
全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 (c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;静态全局变量的作用: (a)不必担心其它源文件使用相同变量名,彼此相互独立。(b)在某源文件中定义的静态全局变量不能被其他源文件使用或修改。 (c) 只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;局部变量与其它三个有本质区别。 局部变量,定义在函数内,作用域为定义位置,到所在大括号结束。 每次执行到定义语句的时候,系统为该变量分配内存,当作用域结束后,内存被释放。而另外三个,都是在系统运行时就分配内存,在运行过程中都不会释放,直到程序结束。也就是说,局部变量和其它三个,最明显的区别:1 生命周期不同2 分配时间不同3 分配位置不同。而另外三个,在这几项上是相同的,之间的区别在于作用域。全局变量,作用域为整个项目,不管在哪个文件中,只要声明后都可以使用。静态全局变量,作用域为定义改变量的所在文件。而静态局部变量,作用域与普通局部变量一样,都是定义位置到所在大括号结束。
4,静态局部变量和局部变量有何不同啊 C中
静态局部变量的生命周期长,它只被定义一次比如for(int i = 0; i <100; i++) static int c =3;//只执行一次。 c++;}地址空间不同,静态存储区和栈全局变量和静态变量差不多,都是程序刚开始就构造,程序结束析构,局部变量一般在某个函数中申明,执行函数时构造,函数退出析构,new的变量,什么时候new什么时候构造,用完后一般自己析构,想在哪儿在哪儿,如果不主动析构,那么程序结束会自己析构,但这样会有内存泄漏局部变量在它的生命期结束时,它的内存也随之消失,再次使用时再次申请空间,而静态局部变量则不会释放当前的内存,而且只定义一次。例1-100的和:for(int i=1;i<101;i++) static int sum=0; sum+=i;}这里的sum并不会因为static int sum=0;而重新定义,而是保持当前的sum的和静态局部变量虽然属于”局部变量”,但其生命周期与整个程序的生命周期一样,只不过在用不到的时候不可见.当其再次被"激活"(也就是程序再次进入定义它的程序段时,其值不变).而局部变量,存放于栈中,用完就没了.作用域:相同作用周期:静态局部变量类似于全局变量,每次进入的时候都使用上一次的值(第一次同局部变量),而局部变量每次重新定义和初始化。
5,全局变量和静态局部变量有什么区别
虽然之前在编程时对这四个“变量”就有不少困惑,但一直没去细究,前两天在联想的笔试题中看到了这样一道题,貌似知道它们的区别却又不能说出其中的原理,今天决定将其弄清楚。 局部变量:在一个函数中或复合语句中定义的变量,在动态存储区分配存储单元,在调用时动态分配,在函数或复合语句结束时自动释放; 静态局部变量:在一个函数中定义局部变量时,若加上static声明,则此变量为静态局部变量,在静态存储区分配存储单元,在程序运行期间都不释放;静态局部变量只能在该函数中使用;静态局部变量在编译时赋值(若在定义时未进行赋值处理,则默认赋值为0(对数值型变量)或空字符(对字符型变量));静态局部变量在函数调用结束后不自动释放,保留函数调用结束后的值; 全局变量:在函数外定义的变量称为全局变量;全局变量在静态存储区分配存储单元,在程序运行期间都不释放,在文件中的函数均可调用该全局变量,其他文件内的函数调用全局变量,需加extern声明; 静态全局变量:在函数外定义变量时,若加上static声明,则此变量为静态全局变量;静态全局变量在静态存储区分配存储单元,在程序运行期间都不释放,静态全局变量在编译时赋值(若在定义时未进行赋值处理,则默认赋值为0(对数值型变量)或空字符(对字符型变量));只能在当前文件中使用; 参考谭浩强的《C程序设计第二版》P180,可从三个方面对以上四种变量进行区分:全局变量和静态全局变量的区别在于作用域不同就是说一个项目里如果有多个源程序文件非静态全局变量可以在所有源文件里调用静态全局变量只能在本文件里调用,不允许在其他文件里调用//file1.cppstatic int a;//只能在file1.cpp里使用int b; //可以在file2.cpp里使用extern int c; //file2.cpp里的cint main(void) a = 1; b = 2;}//file2.cppstatic int a;//只能在file2.cpp里使用int c; //可以在file1.cpp里使用extern int b; //file1.cpp里的bint fun(void) c = a + b;}在多文件的项目开发中这样可以避免由于变量重名造成的冲突
6,c语言中什么是静态局部变量
static 用修饰符来声明的变量叫静态变量。这种变量和一般的变量不同。从程序开始到程序结束一直存在。局部静态变量。是在函数内部声明的静态变量。局部静态变量的值有一个特性,它会保存你操作的结果。举个例子:int test(int a) static int sum = 5; sum += a; return sum;}当你第一次调用时 static int sum = 5;起作用int a1 = test(2);// a1 = 7 同时 sum = 7当你第二次调用时 static int sum = 5;不起作用 sum = 7int a2 = test(2);// a2 = 9 sum = 9这是因为用static声明的变量分配的地址不是在栈中。在完成第一次调用后,它仍然存在,并且有个值。第二次调用时,并不会再重新生成一个变量,还会使用上一次函数完成时的值。静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值(也就是说,如果item是static的,那么只有在第一次进入这个函数的时候会执行item=0,以后都不会执行。)。在函数内部static声明的变量,在第一次调用函数的时候进行初始化,此后对此函数的调用,都使用第一次初始化话时的变量,对函数内部来说就像是使用全局变量一样,但静态局部变量只对声明的函数可见。一般编写底层应用的时候用的比较多静态与实例相对应,静态从字面上理解就是“静态的-_-”,只初始化一次,并常驻内存。静态局部变量相当于全局变量,只是只有在这个函数中能访问,但是生命周期是和全局变量差不多的,函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化语句,保留原来的值。
文章TAG:
静态局部变量 C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有
大家都在看
-
自动售蛋机价格,自动售货机多少钱?一般情况下价格都差不多
2022-12-19
-
自动机械表可以戴着跑步吗,戴运动手表跑步健身
2022-12-20
-
佳能m3设置自动对焦,佳能80d自动对焦模式设置如何进行?
2023-01-04
-
lg v30 自动拍照模式,lgv30怎么玩?
2023-01-08
-
不让百度影棒自动升级,电视上出现百度影棒故障怎么办?
2023-01-10
-
为什么闹钟会自动关闭,为什么不关闭闹钟?原来是这样
2023-01-26
-
自动登陆,登陆网站须注意什么?
2023-02-07
-
小米6 自动拍,如何使用手机拍照?
2023-02-08
-
支付宝怎么样自动提现,如何珍惜赏金提现?
2023-02-09
-
暴风影音字幕自动,怎么用暴风影音?看这里!
2023-03-05
-
科学小实验自动饮水机,用装满水的瓶子做一个自动饮水机
2023-03-05
-
江苏闪派智能科技怎么样,江苏科技大学的电子信息工程怎样
2023-04-01
-
智能科技花洒怎么用,多功能自动储水式电热淋浴器怎样洗澡
2023-04-14
-
元界智能科技是干什么的,智业科技主要是做什么的
2023-04-18
-
实现办公自动化,办公自动化具体都包括那些内容
2023-05-10