本问题对应文章链接:C++常见面试题整理
(1.)作用域
(2.)生命周期
(3.)在内存中位于的分区
(4.)使用时注意
因此,根据良好的程序设计原则,在函数中尽量避免使用全局变量,而是优先使用传递函数参数的方式传递变量值。这样可以提高代码的可读性、可维护性和重用性
(1.)操作系统并不直接参与全局变量和局部变量的区分,它仅负责在程序执行时为变量提供存储空间,并确保其正确访问和管理。
(2.)编译器会根据作用域规则来区分全局变量和局部变量。在编译阶段,编译器会将全局变量标记为具有全局作用域,将局部变量标记为具有局部作用域。
(3.)符号表:一个数据结构,用于存储程序中所有标识符(如变量名、函数名等)的相关信息,包括其名称、类型、作用域等。在编译过程中,编译器会建立符号表来跟踪和管理这些标识符
(3.)所谓的“标记”,实际上是编译器会把全局变量和局部变量的信息加入到符号表中,这些信息就包括二者的作用域。因此编译器通过查找符号表来确定变量的作用域,进而区分是全局变量还是局部变量。
共以下 1 个回答
1、全局变量和局部变量有什么区别?
(1.)作用域
(2.)生命周期
(3.)在内存中位于的分区
(4.)使用时注意
因此,根据良好的程序设计原则,在函数中尽量避免使用全局变量,而是优先使用传递函数参数的方式传递变量值。这样可以提高代码的可读性、可维护性和重用性
2、操作系统和编译器是怎么知道的?
(1.)操作系统并不直接参与全局变量和局部变量的区分,它仅负责在程序执行时为变量提供存储空间,并确保其正确访问和管理。
(2.)编译器会根据作用域规则来区分全局变量和局部变量。在编译阶段,编译器会将全局变量标记为具有全局作用域,将局部变量标记为具有局部作用域。
(3.)符号表:一个数据结构,用于存储程序中所有标识符(如变量名、函数名等)的相关信息,包括其名称、类型、作用域等。在编译过程中,编译器会建立符号表来跟踪和管理这些标识符
(3.)所谓的“标记”,实际上是编译器会把全局变量和局部变量的信息加入到符号表中,这些信息就包括二者的作用域。因此编译器通过查找符号表来确定变量的作用域,进而区分是全局变量还是局部变量。