发布网友 发布时间:2022-04-20 09:57
共11个回答
热心网友 时间:2023-01-25 08:09
自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:
1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。
2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。
3、如果用户不对static变量赋初值,则默认为0或'\0';而auto变量为不确定值。
扩展资料:
auto变量
自动变量(Automatic Variable)指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存储空间,并在离开作用域时释放空间的一类变量。
在许多程序语言中,自动变量与术语“局部变量”(Local Variable)所指的变量实际上是同一种变量,所以通常情况下“自动变量”与“局部变量”是同义的。
参考资料来源:百度百科-自动变量
热心网友 时间:2023-01-25 09:27
一、主体不同
1、auto变量:是一个C/C++语言存储类型,仅在语句块内部使用。
2、static变量:在计算机编程领域指在程序执行前系统就为之静态分配存储空间的一类变量。
二、作用域范围不同
1、auto变量:初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。
2、static变量:针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。
三、特点不同
1、auto变量:具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
2、static变量:在函数内以static声明的变量虽然与自动局部变量的作用域相同,但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。
参考资料来源:百度百科-静态变量
参考资料来源:百度百科-auto
热心网友 时间:2023-01-25 11:02
1、存储部位不同
auto变量会存储在堆栈里面,每次定义的时候会分配存储区,而在用完释放的时候会收回存储区。
static变量会被存储在静态存储区。
2、初始化不同
初始化的时候,如果不赋初值,auto变量是不确定的。C默认的就是auto类型。static变量声明的时候,如果不初始化,编译器会自动初始化。
3、保留的数据不同
static 变量,每次使用的时候会保留上一次的值,即使重新定义,也不会改变static 变量的值。而auto变量不会。
扩展资料
static变量用途
1、作常量使用
静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。
编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。
2、C族语言中的实现
在C语言及由其派生出的C++与Objective-C等程序语言中,“static”是用于控制变量的生命周期和连接方式(即其作用域,亦即可见性)的保留字。
确切来说,正如C族语言中的extern,auto与register这些保留字一样,static也是一种存储类(此处的“类”与面向对象语言的“类”的定义不同)标识。
每个变量与函数都有以上的一种存储类标识,如果在声明中没有明确标识其存储类,编译时就会根据上下文来选择其默认存储类,如在源文件里的所有文件级变量对应的默认存储类是extern,而在函数体内的变量对应的则是auto,各存储类的属性如下表所列。
参考资料来源:百度百科-静态变量
热心网友 时间:2023-01-25 12:53
自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:
1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。
2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。
3、如果用户不对static变量赋初值,则默认为0或'\0';而auto变量为不确定值。
热心网友 时间:2023-01-25 15:01
auto变量存储在动态存储区,static变量存储在静态存储区,主要区别是:在多次使用被调函数中,每执行一次,auto的值都保留原始值(与你的程序执行没关系),但是static却和调用函数的具体过程有关,即保留上次的值,两者在主函数中的功能是一样的。
热心网友 时间:2023-01-25 17:26
static 是静态变量 就是在进程运行整个过程中一直存在的 ,函数里的 static变量可以保存上次运行时的值 在下次调用时使用
函数外的 static 变量只在本文件中可以使用 ,在同时编译的其他文件中是不能访问的
auto 变量就是函数运行时存在 函数结束了变量就不存在了,下次再运行到这里,再次使用,结束时再次失效
一时理解不了没关系,慢慢会理解的。
热心网友 时间:2023-01-25 20:07
auto变量,默认的类型,一般声明时不用加,这种变量超出作用域就消失了,不能再用了,
static变量可以和全局变量有同样的生存期。
热心网友 时间:2023-01-25 23:05
auto是自动存储 生存周期很短 static为静态声明 生存周期一直存在
热心网友 时间:2023-01-26 02:20
static是以前次的结果为基础的
热心网友 时间:2023-01-26 05:51
在这两段程序中,在第一个中,当主函数每次调用AddOne()函数时,所定义的变量ia的初始值都是1;而在第二个中,主函数第一次调用AddOne()函数时,ia=1,当第二次调用时,ia的初始值就是上一次执行AddOne()函数后ia的值了;
static 是静态变量,其作用域是全局。
auto变量,作用域只是当前函数。
热心网友 时间:2023-01-26 09:39
就是