精华内容
下载资源
问答
  • 3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。4、使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量...

    1、定义不同:局部变量指的是在函数内定义的变量,全局变量指的是在函数外定义的变量。2、内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。4、使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。5、作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

    局部变量:
    局部变量又被称为内部变量,是指在一个函数内部或复合语句内部定义的变量。局部变量的作用域是定义该变量的函数或定义该变量的复合语句。也就是说,局部变量只在定义它的函数或复合语句范围内有效,只能在定义它的函数或复合语句内才能使用它们。

    全局变量:
    全局变量又被称为外部变量,它属于一个源程序文件。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

    展开全文
  • PHP 局部变量与全局变量在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的。在函数外定义的变量称为全局变量,在函数内定义的是局部变量。但是,想要在函数内部使用全局变量却不可以直接使用,而是要先通过 ...

    首先,PHP 中从变量的范围上可以分为 4 类,分别是静态变量、局部变量、全局变量和超全局变量。

    PHP 局部变量与全局变量

    在 PHP 中中全局变量和局部变量的定义是和 C 语言类似的。在函数外定义的变量称为全局变量,在函数内定义的是局部变量。但是,想要在函数内部使用全局变量却不可以直接使用,而是要先通过 global 关键字声明:

    $gVar1 = "hello";

    $gVar2 = "world!!";

    say_hello();

    function say_hello(){

    global $gVar1;

    echo $gVar1;

    echo $gVar2;

    }

    ?>

    运行结果:

    1865

    可以看到,结果只输出了 hello,然后就报错了。因为在函数外定义了两个全局变量,而在函数内部只有$gVar1用 global 关键字声明了,所以能正常输出 hello。

    因为$gVar2没有 global 声明,所以,PHP 认为$gVar2是一个局部变量,而函数内部又没有定义该局部变量,所报错说:Undefined variable:gVar2 …

    在函数内部使用全局变量还可以通过$GLOBALS 数组实现:

    $gVar1 = "hello";

    $gVar2 = "TOMORROW www.tomorrow.wiki !!";

    say_hello();

    function say_hello(){

    $localVar = $GLOBALS['gVar1'] . " " . $GLOBALS['gVar2'];

    echo $localVar;

    }

    ?>

    输出结果:

    hello TOMORROW www.tomorrow.wiki !!

    PHP 超全局变量

    上面所用的这个$GLOBALS 其实是一个超全局变量,超全局变量的生效范围要比全局变量大。

    超全局变量只要被定义了,无论是在函数外部还是函数内部,都可以直接使用,无需额外的声明(与 C 语言的全局变量一样)。

    PHP 预定义变量中的超全局变量:

    $GLOBALS

    $_SERVER

    $_GET

    $_POST

    $_FILES

    $_COOKIE

    $_SESSION

    $_REQUEST

    $_ENV

    PHP 静态变量

    静态变量和 C 语言中的作用一样:

    say_hello();

    say_hello();

    say_hello();

    function say_hello(){

    static $staticVar = 0;

    $staticVar+=66;

    echo $staticVar;

    echo "";

    }

    ?>

    输出结果:

    66

    132

    198

    可以看到调用三次函数,输出的结果是不一样的。

    因为静态变量只会进行一次初始化定义,虽然它的生效范围仅限于函数内部,然而,它的生命周期却不等于函数的生命周期。

    也就是说当函数执行完并返回后,静态变量是不会像局部变量一样被销毁的,而是保持着函数返回之前的状态,等待函数的下一次调用。

    TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

    转载请注明原文链接:PHP 局部变量、静态变量、全局变量和超全局变量的使用和区别

    展开全文
  • 局部变量(Local variables)与全局变量: 在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序或代码块。 当...

    局部变量(Local variables)与 全局变量:

    在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序或代码块。
    当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
    全局变量在程序开始运行期间就已经在内存中开辟了内存空间,直到程序结束才会释放这块内存空间。
    全局变量要在其他文件中使用,需显示的声明这个变量,使用extern关键字声明(extern int nData;)。

     

    int nData = 10;    // 这是一个全局变量
    
    int main()
    {
        int i = 0;    // 这是一个局部变量,这个变量只在main函数中有效。
        int nData = 100;    // 这也是一个局部变量,但是这个局部变量与全局变量重名了,那么如果访问nData这个变量的时候到底访问的是哪个?
        cout << nData << endl;
        return 0;
    }

     

    这段代码输出的值是100,因为当局部变量与全局变量重名时,访问的是局部变量。否则访问的则是全局变量!

     

     

    局部静态变量:

    局部static变量与全局变量一样,在程序开始运行期间就已经在内存中开辟了空间,直到程序结束才会释放这块内存空间。

    一个局部static变量只定义/初始化一次,后序都不再定义或初始化。

    局部static变量只能在定义的子程序或代码块中访问,不能在外部访问,所以叫局部静态变量。

    全局静态变量:

    全局static变量与局部static变量一样,在程序开始运行期间就分配了内存地址。

    局部static变量只能在定义的代码块中被访问,而全局static变量只能在定义的文件中被访问。不能跨文件访问。

    转载于:https://www.cnblogs.com/LandyTan/p/6400061.html

    展开全文
  • 本文分析了PHP全局变量与超级全局变量区别。分享给大家供大家参考,具体如下:全局变量就是在函数外面定义变量。不能在函数中直接使用。因为它作用域不会到函数内部。所以在函数内部使用时候常常看到类似...

    本文分析了PHP全局变量与超级全局变量区别。分享给大家供大家参考,具体如下:

    全局变量就是在函数外面定义的变量。不能在函数中直接使用。因为它的作用域不会到函数内部。所以在函数内部使用的时候常常看到类似global $a;

    超全局变量作用域在所有脚本都有效。所以,在函数可直接使用。比如 $_GET,$_SERVER都是超全局变量。除$_GET,$_POST,$_SERVER,$_COOKIE等之外的超全局变量保存在$GLOBALS数组中。注意,不要误写成$_GLOBALS。有点受到$_POST的影响了。

    $GLOBAL是一个特殊的php自定义的数组。超级全局变量。跟$_SERVER一样,都属于超全局变量。

    在手册中搜索$GLOBALS 就能查询超全局变量的具体说明和使用方法

    变量名就是该数组的索引。 说明:使用$GLOBALS['a']定义一个超全局变量后。可以使用$a直接访问

    手册中这样解释的:

    $GLOBALS — References all variables available in global scope引用所有在全局范围内的可用的变量

    结合例子这样理解:假如在函数外面定义了一个变量$a。那么在函数中可用通过$GLOBALS['a']获取到这个变量的值。所以,$GLOBALS数组里面就是:用户定义的所有全局变量。

    为什么称它为超级全局变量。对比$_POST,在函数里面可用直接使用。根本不需要使用global语句了。所以$GLOBALS也是这样的原理,只是$_POST保存是post方式传递的变量。$GLOBALS保存的是用户定义的全局变量。

    个人理解:

    之前对超级全局变量理解不对:超级全局变量在所有脚本下有效,这样表述导致了理解上细微的偏差。如果在所有脚本下有效,那么是不是$GLOBALS保存的超级全局变量,在一个php文件中定义后,在另一个文件中还能获取到。

    显然不会是这样的。估计受到了$_POST的影响,因为它好像所有人都能去访问到。没有意识到,你只能访问到当前处理到的$_POST数据。不可能两个人同时提交留言,php文件获取到post的数据怎么区别。这个数据只能是当前线程的。最后,超级全局变量可以这样看,因为它是相对于全局变量而言的。比全局变量更一个层次,全局变量不能作用到函数内部。它就解决了这个问题。在其他语言中,全局变量都能作用到函数内部。php语言设计就不是这样的。

    全局变量直接在函数内使用,那么总得提供一种变量能直接使用的吧。就出来了超级全局变量的概念。

    希望本文所述对大家PHP程序设计有所帮助。

    展开全文
  • 2.定义在函数内部变量就是局部变量(包括参数),它作用域只在函数内部,它声明周期是定义时生成,函数结束时销毁 3.函数内访问全局变量,要用global或者$GLOBALS[index]数组 <?php $a = 5; $b = 3; ...
  • 全局变量与局部变量的区别 在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。 当全局变量与局部变量同名时: 在定义局部...
  • 全局变量的作用域是整个程序的生命周期,而局部变量的作用域知识在其定义的范围内可以使用。当全局变量与局部变量出现重名的时候,在局部变量的范围内是局部变量起作用,而在其他地方使用会是全局变量起作用。 ...
  • 局部变量 定义:在方法内定义的变量称为“局部变量”或...当局部变量与全局变量重名时,起作用的是局部变量。 成员变量 定义:在类体的变量部分中定义的变量,也称为字段。 区别: java中没有全局变量的定义...
  • 全局变量拥有全局作用域,在 JavaScript 代码任何地方都可以访问;在函数内声明变量只在函数体内有定义,即为局部变量,其...需要注意是,在函数体内声明局部变量时,如果不使用 var 关键字,则将声明全局变量
  • 1.static全局变量只初使化一次,防止在其他文件单元中被引用; 2.static局部变量只被初始化一次,下一次依据上一次结果值; 3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 C语言中讲讲...
  • PHP全局变量与超级全局变量区别分析,php全局变量区别本文分析了PHP全局变量与超级全局变量区别。分享给大家供大家参考,具体如下:全局变量就是在函数外面定义变量。不能在函数中直接使用。因为它作用域不会到...
  • 局部变量与全局变量的划分 如果未对成员变量设制初始值,则系统会更具成员变量的类型自动分配初始值,int 分配初始值为0,Boolean的初始值为false,而自定义的类型会分配初始值为null,比如引用类型string . 成员...
  • java之static变量与全局局部变量的区别 static变量与全局局部变量的区别   全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然...
  • 【malloc 申请的变量、与局部变量全局变量的区别】 1. 无论全局变量还是局部变量都是系统自动分配管理的,内存分配在:静态储存区和动态储存区即栈; 2. 全局变量:如果不人为初始化,系统自动初始化为0; 3. ...
  • 由上图可以看出两个问题, 第一static修饰的局部变量,虽然不会随着函数结束而被释放,但是也是未定义,不能直接引用 , 第二不加static的局部变量bss区域为8个字节,加上之后变为4个,而data区加了4. ...
  • 2、全局、静态存储区:在C语言中,全局变量分为初始化和未初始化的全局变量,初始化的全局变量和静态变量存储在data区,未初始化的全局变量和静态变量存储在bss区,而c++没有区分,他们占有共同区域。例如下面 var...
  • 局部变量与全局变量

    2020-09-19 19:46:29
    全局变量与局部变量两者本质区别就是在于作用域 用通俗话来理解话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明,只能在该函数中调用它 局部变量只能在局部使用。 ...
  • 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈,如果还不清楚,那么就把它想成数组,它的...
  • static全局变量与普通全局变量有什么区别?...这两者在存储方式上并无不同,这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文...
  • 你看上下文来判断1,表示变量是静态存储变量表示变量存放在静态存储区.2,表示该变量是内部连接(这种情况是指该变量不在任何{}之内,就象全局变量那样,这时候加上static),也就是说在其它.cpp文件中,该变量是不可见...
  • static变量与全局局部变量的区别 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的...
  • 变量与常量 变量:指是在程序运行过程中,可以通过代码使他值改变量。 常量:程序运行过程中不会改变量。 局部变量 局部变量:定义在函数中变量。 全局变量 全局变量:定义在函数外面变量。 #...
  • c++内存到底分几个区? 一:  1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。... 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,
  • 局部变量全局变量的区别: 1.作用域不同: 局部变量的作用域是当前函数内。 全局变量的作用域是整个script 标签内。包括函数内。 2.生命周期不同: 局部变量的生命周期 ,依赖于函数的调用周期,从开始调用到结束...
  • 这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,218
精华内容 887
关键字:

局部变量与全局变量的区别是