局部变量
局部变量是指作用域在函数级和块级的变量,它包含有自动变量(auto)、局部静态变量(static)和寄存器变量(register)。
1)自动变量
自动变量是定义在函数体中、子函数中或一段程序块中的变量,定义时可以加auto说明符,也可以不加auto说明符。程序中没有特殊说明存储类型的变量,系统均默认为auto变量。auto变量由系统在程序执行过程中自动建立并自动撤销,它以堆栈方式占用内存空间,当运行到此作用域时系统立即为这个变量分配内存空间,而程序运行完成后,这个堆栈立即又被系统收回,这个变量也就消失了。自动变量在赋值之前它的值是不确定的,因此必须先赋值后使用。
使用自动变量有以下优点:
(1)由于自动变量的特性是“用之则建,用完则逝”,因此它可节省存储空间。
(2)程序员无须关心程序的其他部分使用了什么样的变量名称。
(3)在一个局部中定义所需要的变量,使程序更容易阅读和理解。
2)寄存器变量
寄存器变量是另一种局部变量,这种变量也是定义在函数体内或分程序内的变量,定义时前面必须加说明符register,格式为:
register 变量类型 变量名;
寄存器变量有可能被存放到CPU的通用寄存器中,这样可以提高存取速度。但由于各种计算机系统中的寄存器数目各不相等,寄存器的长度也各不相同,对寄存器存储类别只作建议,不作统一规定。因此能否存放到通用寄存器中取决于当时通用寄存器是否空闲。如果没有被存放到通用寄存器中,系统便按自动变量处理。
超实用性的Python零基础入门到进阶视频源码淘宝¥2购买已下架在定义寄存器变量时应注意以下几点:
(1)该变量的数据长度与通用寄存器的长度相当,一般为char型和int型变量。
(2)寄存器变量不宜定义过多,因为通用寄存器个数有限。
(3)要选择一些使用频率较高的变量优先定义为寄存器变量。
3)局部静态变量
局部静态变量也是局部变量,它定义在函数体内或分程序内,并且用说明符static说明一个变量为静态变量,它的作用域和auto变量相同。局部静态变量和auto变量的最大不同在于,C++编译器以固定的地址存放这个变量,而不是用堆栈存放数据。因此,只要整个程序仍在继续执行操作,这个变量将不会随着运行作用域的结束而消失。也就是说一个变量一旦指定为静态变量,程序在编译时就为其分配了存储空间,并且一直保持到程序结束。
静态变量的初始化是在编译时进行的,可以在定义时对其使用常量或常量表达式进行显示初始化。格式为:
static数据类型,变量名[=常量或常量表达式]
如果没有对静态变量进行显示初始化,则静态变量在定义时有默认值,整型为0,浮点为0.0,char型为空。
该程序的运行结果为,局部静态变量定义在它的函数体increasement()中,当第一次调用结束后,x的值为1,流程返回到主函数中;此时虽然局部静态变量x不可见,但它仍然存在,它没有被释放掉,当第二次调用回到x的作用域后,x的初值保留为1,这就是它的继承性。
好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个