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

当有外部变量时,main函数中的变量也是局部变量马?
如果没有外部变量?main函数里的变量就是全局变量把?
int max(int x,int y)
{int z;
z=x>y?x:y;
return(z);
}
main()
{extern A,B;
printf("%d\n",max(A,B));
}
int A=13,B=-8; 这个例子中外部变量在最后.但是因为它的存在.main中的变量也是局部变量马?
如果没有extern说明 main里的变量还是局部变量把?

区别:

    局部变量:“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。

    全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。  

当有外部变量时,main函数中的同名变量就是全局变量。如果没有外部变量,main函数里的变量依然是局部变量。 

目的:增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值,相当于各个函数之间有直接的传递渠道。

扩展资料:

在现代的面向对象语言如Java,C++,C#,Ruby中,由于变量都是封装在类里面的,对别的类不可见,所以已经几乎完全抛弃了全局变量的概念。然而,可以通过把一个类定义为public static,把类成员变量也定义为public static,使该变量在内存中占用固定、唯一的一块空间,来实现全局变量的功能。

参考资料:百度百科全局变量

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-06

一、有效范围不一样

局部变量只在本函数范围有效,在此函数以外是不能使用这些变量;

全局变量的有效范围是从定义变量的位置开始到本源文件结束。

二、内存空间不同

局部变量是程序运行到该函数时给该变量分配内存空间,函数结束则释放该内存空间;

全局变量是程序运行时事先分配内存空间,当程序结束时释放内存。

三、使用区间不同

全局变量:作用于整个c程序文件;

局部变量:作用于所属语句块或函数中。

扩展资料

全局变量是编程术语中的一种,源自于变量之分。

变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

参考资料

百度百科-全部变量

百度百科-局部变量



本回答被网友采纳
第2个回答  2018-10-07

全局变量和局部变量的区别如下:

1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区

3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了

4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量。

扩展资料:

局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。

全局变量是编程术语中的一种,源自于变量之分。

变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。

全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

本回答被网友采纳
第3个回答  2018-10-19

全局变量与局部变量的区别在于作用域的不同,且存在时间也可能不同。不管有不有外部的变量,main函数中的变量都不能称为全局变量。

全局变量是可以被本程序所有对象或函数引用。

例如:

图中的代码,t1为全局变量,可以在main函数中使用,也可以在a函数中使用。

而t2 t3则为局部变量,它们只能在花括号内部被使用。

所以a函数不能使用t2,main函数也不能使用t3。

拓展资料:

全局变量和局部变量在内存上的不同:

局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。


本回答被网友采纳
第4个回答  2009-04-22
我认为只要是extern定义的变量都是全局变量,还有只要是在main函数外的就是全局变量,不加extern的在main函数里面得就是局部变量!

全局变量是指在整个程序中都可用,而局部变量只是在定义他的那个{}里可用!出了那个{}他就没意义了!

你这个程序是函数的参数调用!程序的意思是:定义了两个全局变量(个人认为这里定义成局部变量也没什么)并比较这两个变量中最大的值。这里是调用了一个用户自定义函数来比较的!本回答被网友采纳
相似回答