题目
C51中定义变量时,如欲使变量的作用范围在定义它的函数体或复合语句内部,则其存储种类应为( )?A. autoB. externC. staticD. register
C51中定义变量时,如欲使变量的作用范围在定义它的函数体或复合语句内部,则其存储种类应为( )?
A. auto
B. extern
C. static
D. register
题目解答
答案
A. auto
解析
本题考查C语言存储类别的作用域范围。关键点在于理解不同存储类别(auto、extern、static、register)的作用域特性:
auto:默认存储类别,变量作用域仅限于定义它的函数体或复合语句内部,生存期为自动(函数返回或复合语句结束时释放)。extern:声明全局变量,作用域为整个程序。static:局部静态变量作用域仍限于函数内部,但生存期为静态(程序运行期间一直存在)。register:建议编译器将变量存入寄存器以提高速度,作用域与auto相同,但存储位置不同。
题目要求变量的作用域严格限制在定义它的函数或复合语句内部,因此需选择auto。
选项分析
-
auto(正确)- 作用域:仅限于定义它的函数体或复合语句内部。
- 生存期:自动释放(函数返回或复合语句结束时失效)。
- 默认值:若未显式指定存储类别,默认为
auto。
-
extern(错误)- 作用域:全局作用域,可被程序中所有函数访问。
- 用途:声明全局变量或引用外部定义的变量。
-
static(错误)- 作用域:局部静态变量仍限于函数内部。
- 生存期:静态存储,值在函数调用间保留。
- 区别:与
auto相比,生存期不同,但作用域相同。
-
register(错误)- 作用域:局部作用域(与
auto相同)。 - 存储位置:建议存入寄存器以提高访问速度,但不改变作用域范围。
- 作用域:局部作用域(与