怎么监控局部变量 局部变量、全局变量、外部变量个采用什么存储方式?
局部变量、全局变量、外部变量个采用什么存储方式?
变量的类别:按范围可分为全局变量和局部变量。按照生命周期可以分为静态存储模式和动态存储模式,具体来说可以分为auto、static、register和extern。
静态存储模式是指在程序运行过程中分配固定存储空间的模式,动态存储模式是指在程序运行过程中根据需要动态分配存储空间的模式。
每个变量有两个属性:作用域和存储类别,用来描述一个变量。这些不同类型的变量和存储位置的关系如下:外部变量(全局变量),静态外部变量和静态局部变量存储在静态存储区。
自动局部变量(局部变量默认为自动局部变量)和函数参数存储在动态存储区,静态存储区和动态存储区都属于内存中的用户区。但是,寄存器变量存储在CPU寄存器中,而不是存储在内存中。首先解释几个与作用域相关的性质:
局部变量:函数内部定义的变量是内部变量,只在这个函数范围内有效,也就是说只能在这个函数内部使用,不能在这个函数外部使用。这种类型的变量称为 "局部变量和。
全局变量:在函数外部定义的变量,可以被这个源文件中的其他函数共享。有效范围是从定义变量的位置到源文件的结尾。这种类型的变量称为a "全局变量和。接下来,解释与存储类型相关的几个属性:
Atuo:声明局部变量时,如果没有指定static,默认都是auto。这些变量是动态分配的存储空间,而数据是存储在动态存储区。
Static:在声明局部变量时,使用关键字static将局部变量指定为 "静态局部变量 ",使其在函数调用后不会消失,而是保持原来的值,即占用的存储单元不会被释放。在下一次函数调用中,变量的现有值是最后一次函数调用结束时的值。寄存器:在声明动态局部变量或函数参数时,可以将变量声明为寄存器,这样编译器系统会为变量分配一个寄存器而不是内存空间,这样可以提高频繁调用某些局部变量的程序的性能。
(寄存器运算速度比内存快很多)
c语言中局部变量可以同名么?
在C语言中,作用域相同的局部变量不能同名。因此,在不同的作用域中,局部变量可能具有相同的名称。1功能不同。不同的函数,局部变量完全无关,自然可以用同一个名字。
2在同一个函数中,但是作用域不同。局部变量的范围是定义的位置,以大括号结束。所以只要两个局部变量属于不同的大括号,它们就可以同名。
比如这里,第一个A的范围包括第二个和第三个,后两个的范围无关紧要。三A 属于三个不同的大括号,可以有相同的名称。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。