精华内容
下载资源
问答
  • 静态局部变量的特点:1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在...即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。 4.
    静态局部变量的特点:1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还继续存在,但不能使用它。倘若再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值2.静态局部变量只会初始化一次3.静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。即使局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量);静态变量的初始值为0。4.当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜.
    <?php
    
    function test()
    {
        static $var = 1;  //static $var = 1+1;就会报错
        $var++;
        echo $var . ' ';
    }
    
     
    test(); //2
    test(); //3
    test(); //4
    
    
    
    
    function testStatic($i){
        //static $arr;
        
        if(!isset($arr[$i])){
        
            $arr[$i]= $i;
        }else{
            $arr[$i]==false;
        }
    
    	return $arr;
            
    }
    var_dump(testStatic('a'));
    var_dump(testStatic('b'));

    //全局变量本身就是静态存储方式,所有的全局变量都是静态变量

    function static_global(){
        global $glo;
        $glo++;
        echo $glo.'<br>';
    }
    
    static_global(); //1
    static_global(); //2
    static_global(); //3
    echo $glo . '<br>'; //3

    更多:http://www.nowamagic.net/php/php_StaticVariable.php

    展开全文
  • 之前都是定义的要么是全局变量要么就局部变量,从来没加过static,现在看到有的变量前面加了static,不知道什么类型的变量要这样定义
  • 全局变量、全局静态变量、局部变量、局部静态变量区别

    存放位置不同

    局部变量:栈区
    静态局部变量:静态区
    全局变量:静态区的常量区
    全局静态变量:静态区

    栈区

    由编译器自动分配释放,存放函数的参数值,局部变量的值。其操作方式类似于数据结构中的栈。

    堆区

    一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。它与数据结构中的堆不同,它的分配方式类似于链表。

    全局区(静态区)

    全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和未初始化的静态变量放在相邻的另一块区域。程序结束后由系统释放。

    文字常量区

    常量字符串存放。程序结束后由系统释放。

    程序代码区

    存放函数体的二进制代码。

    作用域

    1. 全局变量有全局作用域。全局变量只需要在一个源文件中定义,就可以作用于所有的源文件。不过,在其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

    2. 静态全局变量也有全局作用域,但是与全局变量的区别在于全局变量对于所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。即被static关键字修饰过的变量具有文件作用域,它作用于定义它的文件里,不能作用到其他文件里。即使两个不同的源文件都定义了相同的静态局部变量,他们也是不同的变量。不会报错。

    3. 局部变量只有局部作用域,这是自动对象,只在函数执行期存在,函数的一次调用结束后,变量就被撤销,其占用的内存也就被回收了。

    4. 当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。作用域还是局部作用域。
    展开全文
  • 全局变量、局部变量、全局静态变量、局部静态变量的区别。要从分配内存的位置和作用域入手来解释。 全局变量,分配的内存在静态存储区内存上面,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用,...

    全局变量、局部变量、全局静态变量、局部静态变量的区别。要从分配内存的位置和作用域入手来解释。

    全局变量,分配的内存在静态存储区内存上面,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用,同时,有些程序并不是由一个源文件构成的,可能有许多个源文件构成,全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,当然,必须在其他文件使用extern关键字声明该变量。

    局部变量,分配内存是分配在栈存储区上的,其作用域也只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,该变量的生命周期也只是和该函数同在。

    全局静态变量,分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用,但是与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用它。

    局部静态变量,分配的内存也是在静态存储内存上的,其第一次初始化后就一直存在直到程序结束,该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。

    展开全文
  • 变量可以分为全局变量静态全局变量静态局部变量局部变量。...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量定义它的函数内有效,但是函数返回后失效

    变量可以分为全局变量、静态全局变量、静态局部变量和局部变量。


    按照存储区分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区。

     

    按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

     

    全局变量和静态变量如果没有手工初始化,则由编译器初始化为0.局部变量的值是不可知的。静态变量和全部变量完全是两码事。

    展开全文
  • 局部静态变量:将局部变量定义为static类型。 三者区别 1.形参是一种自动对象,是由传递函数的实参进行初始化,作用域仅仅是在所在函数体内有用,,函数终止,则形参也被销毁。 2.局部变量的生命周期由其定义方式...
  • Python实现局部静态变量

    千次阅读 2017-01-07 16:02:03
    Python实现局部静态变量[TOC] python没有局部静态变量,但可以通过以下几种方式实现类似于C语言的函数内局部静态变量。1、定义函数属性在python中一切皆对象,函数也是一个对象,因此可以给函数定义属性:def func...
  • 比如有全局静态变量、局部变量、局部静态变量等,那么他们之间又有什么区别呢!强烈的求知欲促使我去网上找了很多的资料。也对他们做了一个区分。  C#中变量分为:全局变量、静态全局变量、局部变量和静态局部变量...
  • 局部静态变量:静态区 全局变量: 静态区的常量区 全局静态变量:静态区 在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别:   1、栈区(stack)— 由编译器自动分配...
  • 静态变量可以分为:
  • 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。...
  • C++ 局部静态变量

    千次阅读 2019-06-01 08:41:13
    局部静态变量:当需要令局部变量的生命周期贯穿函数调用之后的时间,可将局部变量定义为static类型 以下函数统计自己被调用了多少次 size_t count_calls(){ static size_t ctr = 0; //调用结束后,这个值仍然有效...
  • 局部变量前加上“static”关键字,就成了静态局部变量静态局部变量存放在内存的全局数据区。...静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量局部...
  • (1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。 (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与...
  • 静态变量 静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量...必须有static加以定义才是静态变量,或静态全局变量。对于自动变量(局部变量
  • 局部静态变量static详解

    万次阅读 多人点赞 2018-05-22 08:03:20
    静态局部变量存放在内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。它始终驻留在全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为...
  • 1、全局变量比局部静态变量后析构。 2、C++全局静态变量的析构销毁顺序是未定义的,特别是在多线程环境,多dll环境下,特别复杂,但是在某个编译器下,析构顺序是一定,按着构造的反顺序析构,其他都是随机,不...
  • 全局变量、文件域的静态...局部静态变量(一般为函数内的静态变量)在第一次使用时分配内存并初始化。这里的变量包含内置数据类型和自定义类型的对象。 class B{ public: B() { cout ; } ~B() { cout << "B
  • 局部静态变量的多线程问题

    千次阅读 2014-06-26 20:46:23
    局部静态变量的多线程问题
  • 成员变量、局部变量、静态变量 成员变量 局部变量 静态变量 定义位置 在类中,方法外 方法中,或者方法的形式参数 在类中,方法外 初始化值 有默认初始化值 无,先定义,赋值后才能用 有默认初始化值 ...
  • 浅析VB.NET局部静态变量

    千次阅读 2014-08-19 08:57:31
    经过长时间学习VB.NET局部静态变量,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。VB.NET能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态...
  •  根据书中描述局部static的变量 等价于 全局的非静态变量。一般我们知道全局的变量在函数结束后再次调用的时候就会改变的,但是局部静态变量 总觉得这样来很BT。经过验证的确是这样的效果。 
  • 静态局部变量定义时赋初值问题和定义后赋初值问题 如 1 . static int a=1; 2 . static int a; a=1; 函数中静态局部变量a赋初值,采用上述两种方式时不一样,采用方式1时a是上次结束时的值,采用2方式时a=1还是...
  •  今天在论坛上看到有朋友发帖问道:既然静态全局变量与全局变量都存储在全局数据区,为什么作用域却不一样呢?也许答案非常简单:C++就是这么规定的,静态全局变量与全局变量的唯一区别就是作用域不同。  对一个...
  • 局部静态变量的初始化与异常

    千次阅读 2011-03-26 22:34:00
    编程的过程中,思考了一个...当一个局部的静态变量使用一个函数的返回值初始化时,如果该函数抛出异常,那么,局部静态变量是否被定义成功,即,如果再次调用包含局部静态变量的函数,抛出异常的函数会不会再次被调用。
  • 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都...4、全局变量和静态变量如果没有手工初始化,则由编译...
  •   基本概念: 作用域:起作用的区域,也就是可以工作的范围。 代码块:所谓代码块,就是用{}括起来的一段代码。... 普通的局部变量定义的时候直接定义或者在前面加上auto void func1(void){&nbs...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 247,629
精华内容 99,051
关键字:

局部静态变量定义