⑴ 关于c语言auto变量和static变量区别
一、主体不同
1、auto变量:是一个C/C++语言存储类型,仅在语句块内部使用。
2、static变量:在计算机编程领域指在程序执行前系统就为之静态分配存储空间的一类变量。
二、作用域范围不同
1、auto变量:初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。
2、static变量:针对某一源文件的以static声明的文件级变量与函数的作用域只限于文件内(只在文件内可见),也即“内部连接”,因而可以用来限定变量的作用域。
三、特点不同
1、auto变量:具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
2、static变量:在函数内以static声明的变量虽然与自动局部变量的作用域相同,但存储空间是以静态分配而非默认的自动分配方式获取的,因而存储空间所在区域不同。
⑵ c语言变量储存类型
auto 是自动变量是动态地分配存储空间的,数据在动态存储区,函数执行完后自动释放
实际上 auto 可以省略的,auto不写则隐含自动变量
auto Int b,c=int b,c
static是静态变量 即在函数调用后不消失而保留原值,其占用内存不释放,其值就是上次调用后的结果。
#include<stdio.h>
int fac(int n);
void main()
{ int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
结果为1!=1
2!=2
3!=6
4!=24
5!=120
要输5次
还有register变量 和extern 变量申明
⑶ C语言中的自动变量和寄存器变量是什莫
一、auto
auto称为自动变量。
局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进
行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上
从来不用。
局部变量在函数调用时自动产生, 但不会自动初始化, 随函数调用的结束, 这
个变量也就自动消失了, 下次调用此函数时再自动产生, 还要再赋值, 退出时又自
动消失。
二、register
register称为寄存器变量。它只能用于整型和字符型变量。定义符register说
明的变量被Turbo C2.0存储在CPU的寄存器中, 而不是象普通的变量那样存储在内
存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,
一旦超过两个, 编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量
来处理。因此, 寄存器变量常用在同一变量名频繁出现的地方。
另外, 寄存器变量只适用于局部变量和函数的形式参数, 它属于auto型变量,
因此, 不能用作全程变量。定义一个整型寄存器变量可写成:
register int a;
⑷ C语言所有变量都默认为auto,全局变量不能为auto,那全局变量默认为什么
1、首先在C语言软件中,auto变量可以存储整数类型,如下图所示。
⑸ c语言auto定义变量
{
auto int num=1;
printf("The internal block num equal %d\n",num);
num++;
}
这里面的num是个局部变量阿, 这里所有的num
看成是另一个变量就OK 拉。。。。只在此函数中有效 每次调用函数 重新分配空间
⑹ C语言中的关键字:auto是什么意思怎么用
1auto
这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto
⑺ c语言中变量储存auto和static是怎么用
局部变量按照存储形式可分为auto, static。
与auto类型(普通)局部变量相比, static局部变量有三点不同:
1. 存储空间分配不同
auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域(有效范围)相同, 但生存期不同.
2. static局部变量在所处模块在初次运行时进行初始化工作, 且只操作一次。
3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符, 而auto类型的初值是不确定的.
特点: static局部变量的”记忆性”与生存期的”全局性”
所谓”记忆性”是指在两次函数调用时, 在第二次调用进入时, 能保持第一次调用退出时的值.
注意事项:
1. “记忆性”, 程序运行很重要的一点就是可重复性, 而static变量的”记忆性”破坏了这种可重复性, 造成不同时刻至运行的结果可能不同.
2. “生存期”全局性和唯一性. 普通的local变量的存储空间分配在stack上, 因此每次调用函数时, 分配的空间都可能不一样, 而static具有全局唯一性的特点, 每次调用时, 都指向同一块内存, 这就造成一个很重要的问题 ---- 不可重入性!!!
⑻ c语言中auto什么意思
仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。
C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。
其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。
(8)c语言的auto型变量是存储在哪里扩展阅读:
C语言
auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。
例如:
1 autodoublea=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
⑼ c语言中函数默认存储类型是什么
c语言中的存储类型有static 、auto、extern、及register,函数默认的存储类型应该是extern,意思是具有外部链接性的。一般来说,会通过extern来声明函数。比如下面的代码,在1.c中定义一个函数,函数的声明写在1.h头文件中,在2.c中通过添加1.h的头文件,来声明及调用函数f()。
//1.c
voidf(){;}
//1.h
externvoidf();
//2.c
#include"1.h"
intmain(){f();}
⑽ c语言auto与c ++ auto的区别
在c语言中auto表示变量在内存的栈区中,程序运行结束会自动被释放.
在声明变量时不需要特意加auto,默认就是auto变量.
c++11之前跟c语言的auto一样,11之后auto就变为了自动判断变量类型.
根据等号右侧运算结果来判断左侧变量类型.
比如:
aout a=32.14+3.14; //这时a的类型就是double
auto a=30+3; //这时a的类型就是int