首页 > 产品 > 问答 > 静态局部变量,C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有

静态局部变量,C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有

来源:整理 时间:2023-08-18 08:56:54 编辑:智能门户 手机版

本文目录一览

1,C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有

(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。    (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。      (3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用(尤其是短名全局变量的变量名污染很严重),因此仍以采用局部静态变量为宜。 简单的说静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。

C语言静态局部变量和全局变量有什么区别不都是在整个程序中都有

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语言静态局部变量和全局变量有什么区别不都是在整个程序中都有

最近更新

  • 汽车obd接口,汽车OBD接口定义的标准是什么汽车obd接口,汽车OBD接口定义的标准是什么

    汽车OBD接口定义的标准是什么2,汽车车上的OBD接口是什么东西3,柚子胎压报警器说的OBD接口是指什么在什么位置4,OBD2有那些接口5,金杯海狮车的OBD接口在什么位置6,2011款别克君越obd接口在哪.....

    问答 日期:2023-08-18

  • 苹果4s没有移动数据apn苹果4s没有移动数据apn

    苹果4smove数据没用。美版苹果4s蜂窝移动数据打开E无法连接移动网络怎么办?苹果4s手机开机数据不显示E-2无法上网怎么办/如何设置手机上网的参数:进入手机菜单选择设置、通用、蜂窝移动.....

    问答 日期:2023-08-18

  • 网关怎么填,路由器设置DHCP里的网关怎么填网关怎么填,路由器设置DHCP里的网关怎么填

    路由器设置DHCP里的网关怎么填2,路由器上网关怎么写3,路由器设置中以太网网关地址怎么填4,怎样填写计算机的默认网关5,填完IP和子网掩码默认网关怎么填6,默认网关怎么填写1,路由器设置DHCP里.....

    问答 日期:2023-08-18

  • 串口是什么,串口是什么意思串口是什么,串口是什么意思

    串口是什么意思2,什么是串口3,什么是串口4,串口是什么5,什么是串口6,电脑的串口是什么意思1,串口是什么意思串口是计算机上一种非常通用设备通信的协议,串行端口或称串列埠,序列埠,串口,主要.....

    问答 日期:2023-08-18

  • 贴片铝电解电容,贴片铝电解电容贴片铝电解电容,贴片铝电解电容

    贴片铝电解电容2,贴片铝铝电解电容特性参数3,贴片铝电解电容有什么作用最主要用于哪些方面4,贴片铝电解电容与直插的铝电解电容有区别么5,贴片铝电解电容型号6,常用的贴片铝电解电容规格有.....

    问答 日期:2023-08-18

  • se98,想咨询个有关CAN总线传输的问题 用CAN总线通信是只能传输数字se98,想咨询个有关CAN总线传输的问题 用CAN总线通信是只能传输数字

    想咨询个有关CAN总线传输的问题用CAN总线通信是只能传输数字2,收银机与POS机器功能区别我选哪个各位指点3,看中了方正家电下乡的电脑不知该选那一款4,创维42e600y接网线后可以上网看电影.....

    问答 日期:2023-08-18

  • 火灾自动报警,火灾自动报警原理是什么火灾自动报警,火灾自动报警原理是什么

    火灾自动报警原理是什么2,火灾自动报警系统包括什么内容3,什么是火灾自动报警4,什么是火灾自动报警及联动系统5,什么是火灾自动报警系统6,消防火灾自动报警系统如何设置1,火灾自动报警原理是.....

    问答 日期:2023-08-18

  • 联想怎么清除数据,联想打印机如何清除数据联想怎么清除数据,联想打印机如何清除数据

    联想A766手机如何自行清除系统数据?联想如何清空手机系统内存?联想如何使手机双清模式联想如果忘记了解锁密码,建议自己尝试一下。如果实在无法自己解决,请参考以下建议:1,如果设备开启了US.....

    问答 日期:2023-08-18