全局变量和局部变量有什么区别?是怎么实现的?

如题所述

1、 全局变量的作用用这个程序块,而局部变量作用于当前函数;

2、前者在内存中分配在全局数据区,后者分配在栈区;

3、 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在;

4、 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
操作系统和编译器通过内存分配的位置来知道的全局变量分配在全局数据段,并且在程序被运行的时候就被加载。;

编译器通过语法词法的分析,判断出是全局变量还是局部变量。如果是全局变量的话,编译器在将源代码翻译成二进制代码时就为全局变量分配好一个虚拟地址 (windows下0x00400000以上的地址,也就是所说的全局区),所以程序在对全局变量的操作时是对一个硬编码的地址操做。 

局部变量的话,编译时不分配空间,而是以相对于ebp或esp的偏移来表示局部变量的地址,所以局部变量内存是在局部变量所在的函数被调用时才真正分配。 以汇编的角度来看:函数执行时,局部变量在栈中分配,函数调用完毕释放局部变量对应的内存,另外局部变量可以直接分配在寄存器中。

操作系统通过变量的分配地址就可以判断出是局部变量和全局变量。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-01-31
1、 全局变量的作用用这个程序块,而局部变量作用于当前函数
2、前者在内存中分配在全局数据区,后者分配在栈区
3、 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在
4、 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
操作系统和编译器通过内存分配的位置来知道的全局变量分配在全局数据段,并且在程序被运行的时候就被加载。
编译器通过语法词法的分析,判断出是全局变量还是局部变量。如果是全局变量的话,编译器在将源代码翻译成二进制代码时就为全局变量分配好一个虚拟地址 (windows下0x00400000以上的地址,也就是所说的全局区),所以程序在对全局变量的操作时是对一个硬编码的地址操做。
局部变量的话,编译时不分配空间,而是以相对于ebp或esp的偏移来表示局部变量的地址,所以局部变量内存是在局部变量所在的函数被调用时才真正分配。 以汇编的角度来看:函数执行时,局部变量在栈中分配,函数调用完毕释放局部变量对应的内存,另外局部变量可以直接分配在寄存器中。

操作系统通过变量的分配地址就可以判断出是局部变量和全局变量。

全局变量和局部变量有什么区别?是怎么实现的
3、 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在 4、 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用 操作系统和编译器通过内存分配的位置来知道的全局变量分配在全局数据段,并且...

全局变量和局部变量有什么区别
1、作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等。2、内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。3、生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。4...

简述局部变量和全局变量的区别
局部变量和全局变量的主要区别在于它们的作用域、生命周期以及访问权限。首先,作用域是指变量在代码中的可访问范围。局部变量,顾名思义,其作用域局限在定义它的函数或代码块内部。一旦超出这个范围,该变量就无法被访问。相反,全局变量的作用域则覆盖整个程序,无论在哪个函数或代码块中,都可以直接访问...

全局变量和局部变量的本质区别
局部变量和全局变量的区别有:定义范围不同,作用域不同、生命期不同。主要表现在:1、定义范围不同,一个是函数体内部,一个是函数外部。2、作用域不同,一个仅限于函数体内容,一个是整个程序。3、生命期不同,全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,...

局部变量和全局变量的区别 局部变量和全局变量的区别是什么
1、定义不同:局部变量指的是在函数内定义的变量,全局变量指的是在函数外定义的变量。2、内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了。...

局部变量和全局变量的区别
全局变量,作为外部变量,属于整个源程序文件,可以被程序中的任何部分引用。全局变量的生命周期贯穿整个程序运行过程,直到程序终止时释放内存。在全局变量未指定初始值时,通常会被自动初始化为零。在同一个源文件中,局部变量和全局变量可以使用相同的名称。然而,在局部变量的作用域内,全局变量将不会起...

什么是局部变量和全局变量
全局变量是编程术语中的一种,源自于变量之分。变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数...

局部变量和全局变量的区别
局部变量和全局变量是指在程序中声明和定义的变量的作用范围不同。局部变量是指在函数内部声明和定义的变量,它们的作用范围只限于这个函数内部,除了这个函数,其他函数无法访问和使用这个变量。当函数执行结束后,局部变量的空间会自动被释放。而全局变量是指在整个程序中声明和定义的变量,它们的作用范围...

python局部变量和全局变量的区别
1. 作用域差异:局部变量与全局变量最显著的区别在于它们的作用域。局部变量仅在声明它们的函数或代码块内可用,而全局变量可以在整个程序中访问。2. 生命周期不同:局部变量的生命周期随着声明它们的函数或代码块的执行结束而结束。相反,全局变量的存在是从声明开始直到程序执行完毕。3. 初始化与赋值要求...

全局变量和局部变量有什么区别
全局变量和局部变量是编程中常用的两种变量类型,它们的区别在于它们所作用的范围不同。明确全局变量和局部变量有明显的区别。全局变量是在程序的任何地方都能访问到的变量,它的作用范围是整个程序,甚至包括多个文件;而局部变量则是只能在声明它的函数、代码块或循环结构中使用的变量,只有在其所在的作用...

相似回答
大家正在搜