C语言局部变量和全局变量的区别。——Arvin

局变量是使用相同的内存块在整个类中存储一个值。

全局变量的存在主要有以下一些原因:

1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。

2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少。

3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。

总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。

局部变量说明:

在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。

全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。

局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。根据使用范围来区分的。

1.局部变量

他是 指在函数内部定义的变量 作用域为定义局部变量的函数 也就是说他只能在定义他的函数中使用

最值得注意的是 只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则起变量消失

eg.

func ()
{
   int x;   局部变量x的作用域 很明确
   ......
}

2.全局变量

在程序执行的过程中一直有效

int x=1;
func ()
{
x=x+1;
}
func1 ()
{
  x=x-1;
}
main ()
{
}

由此不难看出整型x的作用范围

对于全局变量 如果在定义的时候不做初始化 则系统将自动为起赋值 数值型为0

字符型为空‘\0‘

全局变量的弊端 增加内存开销 降低函数的通用性

定义全局变量时,理想的位置是在文件的开头,当这些函数以及同一个程序中的其他源程序文件中的某些函数需要使用该全局变量时,在函数内部对该变量使用extern 加以说明,说明他是外部的。

(这里还要做详细的讲解)

main ()
{
extern int a,b;
printf ("mIn is %d\n",min(a,b));
}
int a=1,b=2;
int min (x,y)
int x,y;
{
int z;
z=x<y?x:y;
return(z);
}

我还要说明的是 对外部变量的说明和对全局变量的定义不是一回事。对外部变量的说明 只是声明该变量是在外部定义过的一个全局变量 在这里引用 而对全局变量的定义则是要对其分配存储单元的。一个全局变量只能定义一次 可是却可以多次引用。在同一源文件中,全局变量和局部变量同名时,在局部变量的作用域内,全局变量不起作用的。

-----------------------------------------------------------

更新:20161009

关联:http://blog.csdn.net/t5studio

Email:[email protected]

时间: 2024-10-07 19:03:25

C语言局部变量和全局变量的区别。——Arvin的相关文章

局部变量和全局变量的区别

局部变量和全局变量的区别 局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量.要使用全局变量,需要使用::.在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量.例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内 具体来说,全局变量和局部变量的区别如下: 1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等 2. 内存存储方式不同:全局变量存储在全局数

javascript中局部变量和全局变量的区别详解

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 代码如下: function myName(

张超超OC基础回顾02_成员变量(属性),局部变量,全局变量的区别

成员变量: 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) 成员变量只能通过对象来访问 注意: 成员变量不能离开类, 离开类之后就不是成员变量 成员变量不能在定义的同时进行初始化 存储: 堆(当前对象对应的堆的存储空间中) 存储在堆中的数据, 不会被自动释放, 只能程序员手动释放 @interface Person : NSObject { int _age; NSString *_name; } @end  全局变量: 写在函数和大括号外部的变量, 我们称之为全局变量

python基础--局部变量与全局变量

首先来看两张图,局部变量与全局变量的区别: 局部变量: class MyClass(): def a(self): n=100 print('a中的n数值为:%d'%(n)) def b(self): n=n+200 print('b中的n数值为:%d'%(n)) 这个时候就会报错,函数b中的n=n+200会显示n未定义错误,原因是n只是在函数a中定义了一个值100,但是函数b中并未赋值,如果还是要使用n这个数值,就可以定义一个全局变量,表示区分我这里写成_n 全局变量: _n=1111 cla

python局部变量和全局变量(6)

在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢…… 一.局部变量 一般而言在函数内部或者类中声明的变量默认都是局部变量.一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放. def func1(): # 在函数内部定义的变量默认都是局部变量 a = 1 print(a) # 函数结束,局部变量a的生命周期结束 # 由于a是局部变量,并且a的生命周期已经结束,外部再次调用局部

JAVA基础之局部变量与全局变量以及成员变量的区别

局部变量 定义:在方法内定义的变量称为"局部变量"或"临时变量",方法结束后局部变量占用的内存将被释放. 全局变量 定义:全局变量,又称"外部变量",它不是属于哪个方法,作用域从定义的地址开始到源文件结束. 注意事项: 当局部变量与全局变量重名时,起作用的是局部变量. 成员变量 定义:在类体的变量部分中定义的变量,也称为字段. 区别: java中没有全局变量的定义,这是C中的例: class Demo{ int x;// 非静态成员变量,又称为属

php7中之局部变量,全局变量,超全局变量用法和区别

我们在使用php函数得时候遇到 ,局部变量,全局变量,超全局变量,如何灵活运用,php7中之局部变量,全局变量,超全局变量用法和区别? 1,局部变量 局部变量是在函数体内得变量,不能用外部得变量得值,只有当局部变量得值定义为全局变量才能使用外部变量得值 $a=1 function jj() { echo $a; } jj(); 2.全局变量 申明在函数外得变量,可以全局使用,使用关键词 global //global $a;$a="www.96net.com.cn";function

C++局部变量、全局变量、静态变量(堆、栈、静态存储区)

1 static关键字 1.1 隐藏 eg: //a.c文件中 char a = 'A'; void msg() { printf("Hello\n"); } //main.c文件中 extern char a; printf("%c",a); 输出结果:A Hello 所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问.a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的. 如果加了stat

局部变量与全局变量在声明时的注意事项

/* ============================================================================ Name : TestVariable.c Author : lf Version : Copyright : Your copyright notice Description : 局部变量与全局变量在声明时的注意事项 全局变量只能要常量赋值,但是局部变量可用常量和表达式以及函数赋值. 这是为什么呢? 程序在开始执行时需要用适当的值来初