📜  C |变量声明和范围|问题5(1)

📅  最后修改于: 2023-12-03 14:59:38.024000             🧑  作者: Mango

C | 变量声明和范围 | 问题5

在 C 语言中,变量的作用域是指变量能够被访问的范围。变量的作用域分为全局作用域和局部作用域。

全局作用域的变量在程序的任何位置都可以被访问,而局部作用域的变量只可以在其定义的作用域内被访问。

在 C 语言中,变量的作用域通常由其声明的位置来确定。例如,变量如果被声明在函数外部,则它的作用域为全局作用域;如果变量被声明在函数内部,则它的作用域为局部作用域。此外,在 C 语言中,还存在一种特殊情况,即局部变量和全局变量同名的情况。

以下是一些示例代码,展示了不同作用域的变量和同名变量的情况。

#include <stdio.h>

/* 全局变量 */
int globalVar = 20;

int main () {

  /* 局部变量 */
  int localVar = 10;
  
  printf ("在 main 函数中,globalVar = %d\n",  globalVar);
  printf ("在 main 函数中,localVar = %d\n",  localVar);

  /* 调用函数 test() */
  test();

  return 0;
}

void test() {

  /* 同名的局部变量 */
  int globalVar = 30;

  printf ("在 test 函数中,globalVar = %d\n",  globalVar);

}

上面代码中,定义了一个全局变量 globalVar 和一个局部变量 localVar,在 main() 函数中访问这两个变量。然后,在 test() 函数中,定义了与全局变量同名的局部变量 globalVar,并输出其值。

代码执行结果如下:

在 main 函数中,globalVar = 20
在 main 函数中,localVar = 10
在 test 函数中,globalVar = 30

可以看到,全局变量 globalVar 可以在函数内部和函数外部被访问,而局部变量 localVar 只能在 main() 函数内部被访问。

test() 函数中,虽然定义了一个与全局变量同名的局部变量 globalVar,但是它只在 test() 函数内部有效,在 main() 函数中依然可以访问到全局变量 globalVar