单选题 设某程序中定义了全局整型变量x和y,且函数f()的定义如下所示,则在语句“x=3*y+1;”中______。
int f(int y)
{ int x;
x=3*y+1;
return x;
}
  • A.x和y均是全局变量
  • B.x是全局变量、y是局部变量
  • C.x是局部变量、y是局部变量
  • D.x是局部变量、y是全局变量
【正确答案】 C
【答案解析】[解析] 本题主要考查程序中变量的作用域。 根据变量作用域与其定义语句在程序中出现位置关系,可把变量分为局部变量和全局变量两种。其中,在函数外部定义的变量叫做全局变量,又称为外部变量;在函数体内定义的变量是局部变量,又称为内部变量(当然,函数的形参也是一种局部变量)。局部变量和全局变量主要有以下区别。 (1)作用域的不同,局部变量的作用域是定义它的函数或程序段,而全局变量的作用域是整个程序。 (2)局部变量的生命周期与其存储类型有关,而全局变量的生命周期是整个程序的生命周期。 (3)当局部变量和全局变量同名时,局部变量在其作用域内具有更高的优先使用权。 (4)不同函数或程序段之中的局部变量可以同名,而不同的全局变量名称必须不相同。 所以,在本题中,虽然在函数外定义了全局变量x和y,但在函数f中,有局部变量x和y,那么在函数f中使用时,局部变量比全局变量具有更高的优先权,所以函数f中的x和y都是局部变量。