c语言静态变量生存期
答:静态变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。第一个printf( "%d\n", func(k+=100) );k+=100,k就是200;x++; y++; k++; x=2,y=11,k=201;所以第一次打印是214 第二个...
答:静态全局变量:作用域为当前文件,从定义/声明位置到文件结尾,生命周期为从程序运行到程序退出,即贯穿整个运行时间。常量使用 静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且...
答:(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。(4)对基本...
答:按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量...
答:C中变量的生存周期:自动生存周期(自动变量)、静态生存周期(静态变量,在程序运行期间始终存在)C中变量(函数)的链接属性分为:静态连接属性、自动链接属性,由static关键字标志 C中的存储类说明符实际上是上述属性的不同组合(此处只针对变量而言):auto 具有代码块作用域,自动生存周期,外部或者内部...
答:我简略讲解一下难点吧~1.第一句int a=2,这里定义了一个全局变量a,他的作用域(起作用的地方)为整个程序,生存期(从生成到销毁)贯穿整个程序。2.函数中,你应该少打了一个函数名f。。。3.在f中第一句static int a=3; 定义了一个静态(static)变量a,它的作用域仅在这个函数中,生存期...
答:不正确,函数内的静态变量在该函数调用结束后,且该函数所在的模块没有被释放的情况下,这个静态变量值为上次函数调用后的值。这样说比较抽象。举例说明一下:void AA(){ static int s_iCount; //C语言默认初始化0值 s_iCount++; //每调用AA()一次,s_iCount会自加一次 printf("%d\n", ...
答:static int i=1; //表示定义一个静态变量i 当i是个局部变量时,表示这个变量的生存期为整体程序的运行期,就相当于是个全局变量,区别只在于,静态局部变量是在函数体内进行初始化,如上面的int i=1;这个初始化,只在函数第一次调用时进行,当第二次调用这个函数时,这一句就不会再执行了,i就...
答:static 用修饰符来声明的变量叫静态变量。这种变量和一般的变量不同。从程序开始到程序结束一直存在。局部静态变量。是在函数内部声明的静态变量。局部静态变量的值有一个特性,它会保存你操作的结果。举个例子:int test(int a){ static int sum = 5;sum += a;return sum;} 当你第一次调用时 ...
答:自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。3、如果用户不对static变量赋初值...
网友评论:
淳泥13470805447:
c++中变量的生存期问题? -
15711栾宝
: C语言里 在函数内定义的变量生存周期是从定义到该函数结束 C++里,一个变量生存周期为它所在的最内层的"{}"里 比如1 2 3 4 5 6 7 8intmain() {inta = 1;if(a > 0){intx = 2;}//第一个"}" }//第二个"}" 以上在C++中a的结束是第二个"}",x的结束是第一个"}"
淳泥13470805447:
C语言中 变量作用域的区别 -
15711栾宝
: 作用域和生存周期是完全不同的两个概念.作用域可以看作是变量的一个有效范围,就像网游中的攻击范围一样;生存周期可以看成是一个变量能存在多久,能在那些时段存在,就像网游中的魔法持续时间…… 简单的以一个局部变量来举个例子...
淳泥13470805447:
C语言的各种数据在内存中如何存储? -
15711栾宝
: 变量可以存储在内存中的不同地方,这依赖于它们的生存期.在函数外部定义的变量(全局变量或静态外部变量)和在函数内部定义的static变量,其生存期就是程序运行的全过程,这些变量被存储在数据段(datasegment)中.数据段是在内存...
淳泥13470805447:
C语言常变量 -
15711栾宝
: 其实,要分细了有四类:全局变量、静态全局变量、静态局部变量和局部变量. 存储类别:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域;局部变量存放在内存的栈区. 作用域与生存期:全局变量在整个工程文件内都有效,生存期与整个程序相同;静态全局变量只在定义它的文件内有效,生存期与整个程序相同;静态局部变量只在定义它的函数内有效,但函数返回后,该变量不会销毁,生存期与整个程序相同;局部变量在定义它的函数内有效,函数返回后销毁.
淳泥13470805447:
静态变量的生存期 -
15711栾宝
: 所谓静态变量,就是相对于函数中定义的局部变量来说的,比如:void fun() { static int xxx=2; int yyy=1 x++; } 这个函数中开设了一个静态变量xxx并且使其初始值等于2.这个变量在main程序还没有运行时就被创建好了,并且被赋初值为2.程序运行中如多次调用fun函数并不会重新赋初值,并且xxx将会记住自己的当前值(每调用fun一次自加一,相当于计数该函数的调用次数).而相对的,yyy是每次调用函数时,才开设存储区给yyy并赋初值为1后再执行后面语句,并且退出fun后yyy的内存空间就立刻被释放了.
淳泥13470805447:
C语言和C++中怎么定义一个永久生存期的变量? -
15711栾宝
: 对变量进行序列化保存:1)把变量定义为注册表变量,每次启动时读注册表,程序关闭时写注册表;2)或者把变量保存在文件中一样;
淳泥13470805447:
C语言中,若全局变量定义时未规定属性,则他的属性是什么? -
15711栾宝
: 1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失.静态局部变量始终存在着,也就是说它的生存期为整个源程序. (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即...
淳泥13470805447:
C++中静态生存期和动态生存期的区别 -
15711栾宝
: 你的程序这样理解. 一开始int i的声明放在main外面,程序最上面,是做为全局变量的. 所以可以被main函数和other函数调用,生存期是整个程序. 加static的是静态变量声明,生存期是整个程序.注意的是静态声明如果不给初始值,默认是0.动态不...
淳泥13470805447:
谁给我解释下C语言中变量的生命周期 -
15711栾宝
: 函数内部, 不带static修饰的, 是局部变量.比如你说的j.这种,生命周期是从定义位置, 到作用域结束. 函数内部 带static的是静态局部变量.函数外部 带static的是静态全局变量. 带extern的是外部全局变量. 不带的 是全局变量.静态局部变量以及所有的全局变量, 生命周期都是整个程序运行时间.
淳泥13470805447:
C语言中的存储类说明符有哪些?各自的含义如何? -
15711栾宝
: 其实,这是C中的基础,但是若不是对C有透彻的理解,绝对回答不清楚! 推荐的参考资料:C Primer Plus ,其中有一章专门讲解这个;在理解C的存储类说明符之前,首先要搞懂的概念有:作用域、生存周期、链接属性C中存在如下的作用...