首页 > 试题广场 >

已知一函数中有下列变量定义,其中属于自动变量的有?

[不定项选择题]
已知一函数中有下列变量定义,其中属于自动变量的有()。
  • double k;
  • register int i;
  • static char c;
  • auto long m;
推荐
答案: A  D
解释:

自动变量,只在定义它们的时候才创建,在定义它们的 函数 返回时系统回收变量所占 存储空间 。对这些变量 存储空间 的分配和回收是由系统自动完成的。一般情况下,不作专门说明的 局部变量 ,均是自动变量。自动变量也可用关键字auto作出说明
编辑于 2015-02-05 10:05:14 回复(1)
答案:AD
普通的变量,不管是否声明为auto,都是自动型变量
A,普通变量,是auto的
B,寄存器变量,不是
C,静态变量,不是
D,声明为auto,是
发表于 2015-01-27 16:46:16 回复(8)
简单介绍一下register变量:它是把变量存储在cpu中的寄存器中,当一个变量需要反复读写时,不需要反复的访问内存,而直接可以使用它,并且,register是一个建议型的关键字,编译器可能会因为变量不满足一定条件而放弃使用寄存器变量。一般情况下将局部自动变量和函数形参作为寄存器变量。
所以当定义一个静态变量为寄存器变量,编译器不会通过,它仍然还是静态变量。
发表于 2015-09-03 13:15:59 回复(0)
自动变量一般存在堆栈,register int i;寄存器中,static char c;存在于全局和静态区
发表于 2016-07-29 18:31:29 回复(0)
可是C++11已经做了很多修改更新啊
auto  自动类型推断(之前的用法已经不合法)
register 显式地指出变量是自动的(之前的用法已经不合法)
所以在C++11下,这题应该选AB  
欢迎讨论

发表于 2018-12-07 10:57:02 回复(0)

自动变量

  • 只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。
  • 对这些变量存储空间的分配和回收是由系统自动完成的。一般情况下,不作专门说明的局部变量,均是自动变量。自动变量也可用关键字auto作出说明
A  D 都
B为 寄存器变量
C为 静态变量
静态变量Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。 
编辑于 2019-09-01 20:40:15 回复(0)
普通的变量,不管是否声明为auto,都是自动型变量
A,普通变量,是auto的
B,寄存器变量,不是
C,静态变量,不是
D,声明为auto,是
发表于 2019-08-31 12:02:32 回复(0)
这个题得搞清楚自动变量的含义。
自动变量:只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占存储空间。对这些变量存储空间的分配和回收,是由系统自动完成的。
发表于 2020-09-29 00:23:55 回复(0)
不用专门说明的局部变量都是自动变量,用auot关键字修饰的变量也是自动变量。
发表于 2016-05-20 12:49:16 回复(0)
我觉得这题条件不够明确,没有说清楚是在什么环境下,如果在C++11中,选AB,C++11之前答案是正确的。 这题有些年头了
发表于 2021-12-24 17:43:35 回复(0)
我瞎了,没看见是函数中的,所以竟然没选A B是寄存器中的,不是自动变量
编辑于 2019-07-30 10:27:54 回复(0)
自动变量是局部变量的一种,自动变量的空间分配,在它所在函数被调用的时候,而静态局部变量,在函数调用之前,就被分配了存储空间了。
发表于 2023-10-13 22:12:41 回复(2)
D选项C语言合法,C++报错
发表于 2025-06-24 09:15:23 回复(0)
A.普通变量,为auto
B.寄存器变量
C.静态变量
D.声明为auto
发表于 2024-03-21 19:47:01 回复(0)
D在vs 2017下都编不过,怎么还是正确的呢? auto关键字需要依据=右边的变量类型进行推定,语法条件不满足吧
发表于 2021-05-25 09:44:48 回复(0)
一般情况下, 没有auto说明的局部变量均是自动变量,自动变量也可用关键字auto做出说明、
编辑于 2017-11-08 16:17:37 回复(0)