问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于c语言auto变量和static变量区别

发布网友 发布时间: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

就是
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
孕期有哪些非常重要的检查项目需要特别注意? 百合种植多久收 如何计算百合种植时间 古文《伤仲永》《周处》的字词整理 文言文中常出现的字及意思 ...学生重25千克,4040名学生重1吨.一只山羊重50千克,8080只山羊重4吨... 古文中意思为你的字词有哪些 语文古文中的字词问题!! 文言文中常出现的字及意思 古文中意思为你的字词有哪些 ...长龙鳞很多密宗的师傅都帮我想办法但是还是就要变龙了 王比,连成一个字怎么读啊? 关于static的问题,求助~ 王 比 念什么关系 php面向对象static是什么意思 王比,连成一个字怎么读啊? C++中关于static 求拉丁语翻译 王比读什么 类的静态初始化方法如何写 你好,请问网易云能调倍速嘛? 什么时候要用static修饰符? C# 在public方法中,static的作用 全局变量 与 static型的局部变量 有什么区别 静态函数的Static关键字 static 和 Volatile 的区别 JAVA中将类声明为static有什么作用? c语言static用法??? static关键字知多少 关于static JAVA中static 关键字代表什么意思 3个王比6个炸大吗 java中static关键字的意义 姓氏王比姓氏刘多多少? 小南辰王比时宜大几岁 为什么白羽王比银羽王吃玉米狠? 白蚁王比工蚁大多少倍? 13王比201封有没有挂? 扑克中一个王比一对子要大吗? 字谜:两个王子站在一起在下面比,是什么字? 国际象棋中王和后在外型上有什么区别,哪个高? 王给李十二个苹果后两人苹果数同样多,原来王比李多... 哪个王比康熙还牛,十三岁继位即手刃杀父仇人 红黑碳王有什么性能 和狂飙王比怎么样? 王阿姨买了三斤苹果李阿姨买五千克同样的苹果,王... 360三代抢票王比12306官网快吗? 哪个王比康熙还牛,十三岁继位即手刃杀父 国际象棋中的王后比国王厉害吗? 有人叫去玩游戏机捕鱼的,然后没钱了给你上分最后输... 管水闸人员随便关闸 让别人捕鱼 然后在分给他分鱼... 终于知道捕鱼大师怎么刷分上分 原来有人用开挂作