MST

星途 面试题库

面试题:C++中如何正确引用已定义的全局变量

假设在C++项目中有一个已定义的全局变量 `int globalVar = 10;`,在另一个源文件的函数中想要引用这个全局变量并修改它的值为20,写出实现代码,并解释使用的方法及其原理。
46.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 实现代码
    // 第一个源文件,定义全局变量
    #include <iostream>
    int globalVar = 10;
    
    // 第二个源文件
    #include <iostream>
    extern int globalVar;
    void modifyGlobalVar() {
        globalVar = 20;
    }
    
    // 主函数,用于测试
    int main() {
        std::cout << "Before modification: " << globalVar << std::endl;
        modifyGlobalVar();
        std::cout << "After modification: " << globalVar << std::endl;
        return 0;
    }
    
  2. 方法及原理
    • 方法:在需要引用全局变量的源文件中,使用 extern 关键字声明变量。在上述代码中,在第二个源文件中使用 extern int globalVar; 声明了 globalVar
    • 原理extern 关键字用于声明一个在其他地方定义的变量。当编译器遇到 extern 声明时,它知道该变量在其他地方已经分配了内存,不会再次为其分配内存。这样,不同源文件就可以共享同一个全局变量,通过这种声明,在第二个源文件中的函数 modifyGlobalVar 就可以访问并修改第一个源文件中定义的 globalVar 的值。全局变量在程序的整个生命周期内存在,其作用域默认是从定义处到文件末尾,但通过 extern 声明可以扩展其作用域到其他源文件。