❶ 关于c语言中auto和register的问题
1、auto变量:
函数中的局部变量,如不专门声明为static存储类别,都是动态分配存储空间的,数据存储在动态存储区。在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。这类局部变量称为自动变量。自动变量用关键字auto作存储类别的声明。如:
int f(int a)
{
auto int b,c=3
}
实际上,关键字auto可以省略,auto不写则隐含确定为”自动存储类别“,它属于动态存储方式。程序中大多数变量属于自动变量。
2、register变量
一般情况下,变量的值是存放在内存中的。当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到运算器中。经过运算器进行运算,如果需要存数,再从运算器将数送到内存存放。如果有一些变量使用频繁,则为存取变量的值要花不少时间。为提高执行效率,C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取。由于寄存器的存取速度远高于内存的存取速度,因此这样可以提高执行效率。这种变量叫做”寄存器变量“,用关键字register作声明。如:
int fac(int n)
{
register int i,f=1;
}
register变量的说明:
1)只有局部自动变量和形式参数可以作为寄存器变量,其他不行。
2)一个计算机系统中的寄存器数目是有限的,不能定义任意多个寄存器变量。不同的系统允许使用的寄存器是不同的,而且对register变量的处理方法也是不同的,有的系统对register变量当作自动变量处理,分配内存单元,并不真正把它们存放在寄存器中,有的系统只允许将int、char和指针型变量定义为寄存器变量。
3)局部静态变量不能定义为寄存器变量。如:register static int a;是错误。
4)当今的优化编译系统能够自动识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定。因此在实际上用register声明变量是不必要的。
❷ C语言中关键字auto到底有什么用途
毫无用途;它已经过时。
❸ C语言中auto定义变量有哪些用法
语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了。 在C或者以前的C++中,auto关键字基本上可以被无视:比如这个局部变量:int a = 100;auto int a = 100;并没有什么区别。 但是在VC2010中,auto已经有了新的含义,它可以对类型进行推断使得我们在使用的时候可以这样auto a = 100;那么a就是int类型,初始值为100。
❹ c语言中auto什么意思
c语言65分,忘了,但auto根据英文缩写是自动的意思吧。
❺ 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
❻ c语言auto定义变量
{
auto int num=1;
printf("The internal block num equal %d\n",num);
num++;
}
这里面的num是个局部变量阿, 这里所有的num
看成是另一个变量就OK 拉。。。。只在此函数中有效 每次调用函数 重新分配空间
❼ 计算机c语言中auto是什么意思,有什么功能
auto表示自动变量
它只能用在局部变量之前
所谓自动变量就是变量的内存分配和回收都通过栈自动完成
全局变量不可以加auto
❽ auto在C语言中的意义
C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字a u t o定义局部变量这一作法保持一致。局部变量仅由其被定义的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外是不可知的。切记:模块以左花
括号开始,以右花括号结束。
对于局部变量,要了解的最重要的东西是:它们仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。
定义局部变量的最常见的代码块是函数。
整数变量x被定义了两次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相关。其原因是每个x作为局部变量仅在被定义的块内可知。
语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了
❾ c语言中auto什么意思
仅在语句块内部使用,初始化可为任何表达式,其特点是当执行流程进入该语句块的时候初始化可为任何表达式。
C语言中提供了存储说明符auto、register、extern、static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。
其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。
在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。
(9)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