自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:
1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。
2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。
3、如果用户不对static变量赋初值,则默认为0或'\0';而auto变量为不确定值。
扩展资料:
auto变量
自动变量(Automatic Variable)指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存储空间,并在离开作用域时释放空间的一类变量。
在许多程序语言中,自动变量与术语“局部变量”(Local Variable)所指的变量实际上是同一种变量,所以通常情况下“自动变量”与“局部变量”是同义的。
参考资料来源:百度百科-自动变量
1、首先在C语言软件中,auto变量可以存储整数类型,如下图所示。
2、定义了存储整数的auto变量之后,把它当作整数来使用输出变量的值。
3、auto变量也可以存储字符串,具体例子如下图所示的代码段。
4、调试运行的输出结果看,也是跟定义字符串类型输出的结果是一样的。
5、定义完成auto为lambda类型之后,就可以把auto类型当作函数来使用,如下所示,输出两个整数的和,就完成了。
仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。
C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。
其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。
扩展资料:
C语言
auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。
例如:
1 auto double a=3.7表示a为一个自动存储的临时变量。
C++语言
C++ 98标准/C++03标准
同C语言的意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。
C++ 11标准
在C++11标准的语法中,auto被定义为自动推断变量的类型。例如:
auto x=5.2//这里的x被auto推断为double类型
map<int,int>m
for(auto it=m.begin()//这里it被auto推断为map<int,int>::iterator类型
it!=m.end()++it)
{
//....
}不过C++11的auto关键字时有一个限定条件,那就是必须给申明的变量赋予一个初始值,否则编译器在编译阶段将会报错。
参考资料:百度百科-auto