蓝鸥iOS培训讲师推荐:今天的课程是C++基础篇里面的变量,那么变量又分为全局变量和局部变量两大类,首先先了解一下有关它们的介绍!
一、全局变量
程序的编译单位是源程序文件,一个源文件可包含一个或若干函数,在函数内定义的变量称为局部变量,而在函数之外定义的变量称为外部变量,也叫作全局变量,那么全局变量的有效范围是从定义变量的位置开始到本源文件结束。例如:
p/q/c1/c2全是全局变量,不过它们的作用范围不一样,在main函数和f2函数中可用全局变量p/q/c1/c2,但是在f1中只可用全局变量p/q。
在一个函数中可使用本函数中的局部变量/有效全局变量
全局变量说明:
1、设全局变量的作用是增加函数间数据联系的渠道
2、建议不在必要时不要使用全局变量,因为:
1)全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元
2)它使函数的通用性降低了,因为在执行函数时要受到外部变量的影响,如果将一个函数移到另一个文件中,还要将有关的外部变量及其值一起移过去,但若该外部变量与其他文件的变量同名,就会出现问题,降低了程序的可靠性和通用性。在程序设计中,在划分模块时要求模块的内聚性强,与其他模块的耦合性弱,即模块的功能要单一(不要把许多互不相干的功能放到一个模块中),与其他模块的相互影响要尽量少,而用全局变量是不符合这个原则的。
3)一般要求把程序中的函数做成一个封闭体,除了可以通过“实参——形参”的渠道与外界发生联系外,没有使用全局变量过多,会降低程序的清晰性,在各个函数执行时都可能改变全局变量的值,程序容易出错!因此,要限制使用全局变量。
3、如果在同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,全局变量被屏蔽,即它不起作用。
变量的有效范围称为变量的作用域,归纳起来,变量有4种不同的作用域,文件作用域,函数作用域(functionscope),块作用域(blockscope)和函数原型作用域(functionprototypescope),文件作用域是全局的,其他三者是局部的。
二、局部变量
在一个函数内部定义的变量是内部变量,只在本函数范围内有效,意思就是只能在本函数内才能使,在该函数外不能用这些变量,一样,在复合语句中定义的变量只在本复合语句范围内有效,称之为局部变量。例如:
局部变量说明:
1、主函数main中定义的变量(m,n)也只在主函数中有效,不会因为在主函数中定义而在整个文件或程序中有效,主函数也不能使用其他函数中定义的变量。
2、不同函数中可以使用同名的变量,它们代表不同的对象,相互没联系,如,在f1函数中定义了变量b和c,倘若在f2函数中也定义变量b和c,它们在内存中占不同的单元,不会混淆。
3、可以在一个函数内的复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为分程序或程序块。
4、形式参数也是局部变量,例如f1函数中的形参a也只在f1函数中有效,其他函数不能调用。
5、在函数声明中出现的参数名,其作用范围只在本行的括号内,实际上,编译系统对函数声明中的变量名是忽略的,即使在调用函数时也没有为它们分配存储单元。例如:
intmax(inta,intb);//函数声明中出现a、b
┆
intmax(intx,inty)//函数定义,形参是x、y
{
cout<<x<<y<<endl;//合法,x、y在函数体中有效
cout<<a<<b<<endl;//非法,a、b在函数体中无效
}
编译时认为max函数体中的a和b没有定义
全局变量和局部变量就整理到这,如果有问题可直接联系,希望能够帮助到你哦!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。