c++怎么使用外部变量_c++ extern关键字作用是什么

来源:Java编程网作者:不吃香菜头衔:草根站长
导读:本期聚焦于小伙伴创作的《c++怎么使用外部变量_c++ extern关键字作用是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《c++怎么使用外部变量_c++ extern关键字作用是什么》有用,将其分享出去将是对创作者最好的鼓励。

在c++程序开发中,当多个源文件需要访问同一个全局变量时,就需要用到外部变量和extern关键字。外部变量指的是定义在其他文件中的全局变量,而extern关键字的作用就是声明该变量是在其他地方定义的,当前文件只是引用它,不会重新分配内存空间。

c++怎么使用外部变量_c++ extern关键字作用是什么

什么是外部变量

外部变量本质上就是全局变量,只不过它的作用域扩展到其他文件。全局变量在定义的时候会分配内存空间,默认情况下它的作用域只在定义它的文件内,其他文件无法直接访问。如果要在其他文件中使用这个全局变量,就需要通过extern关键字进行声明。

extern关键字的核心作用

extern关键字的核心作用只有两个:

  • 声明一个变量是外部定义的,告诉编译器这个变量的定义在其他地方,当前只是引用,不要为它分配内存
  • 用于声明全局函数,表明函数是外部定义的,不过函数默认就是extern的,所以通常可以省略

extern声明和变量定义的区别

很多开发者容易混淆extern声明和变量定义,两者的核心区别如下:

类型是否分配内存是否可以初始化作用
变量定义可以创建变量,分配存储空间
extern声明不可以告知编译器变量在其他地方定义,当前文件引用

c++使用外部变量的完整流程

使用外部变量需要遵循固定的步骤,否则会出现编译或者链接错误:

第一步:在一个源文件中定义全局变量

首先在某个源文件中定义需要共享的全局变量,比如我们在globals.cpp文件中定义:

// globals.cpp 文件
#include <iostream>

// 定义一个全局变量,分配内存空间
int global_count = 10;

// 定义一个全局函数
void print_global() {
    std::cout << "global_count value: " << global_count << std::endl;
}

第二步:在头文件中用extern声明变量和函数

为了方便其他文件引用,我们通常会创建一个头文件,在里面用extern声明变量和函数:

// globals.h 文件
#ifndef GLOBALS_H
#define GLOBALS_H

// 声明外部变量,不分配内存,不能初始化
extern int global_count;

// 声明外部函数,函数默认是extern,写不写都可以
extern void print_global();

#endif

第三步:在其他源文件中包含头文件使用变量

现在其他源文件只需要包含globals.h头文件,就可以使用global_count变量和print_global函数了:

// main.cpp 文件
#include <iostream>
#include "globals.h"

int main() {
    // 使用外部变量,修改其值
    global_count = 20;
    std::cout << "modified global_count: " << global_count << std::endl;
    
    // 调用外部函数
    print_global();
    
    return 0;
}

编译运行

编译的时候需要把两个源文件一起编译,命令如下:

g++ main.cpp globals.cpp -o test
./test

运行结果会输出:

modified global_count: 20
global_count value: 20

使用extern的注意事项

  • extern声明不能初始化,否则就变成定义了,比如extern int a = 10;是错误的,除非是const变量的情况
  • const全局变量默认是内部链接的,如果要让它成为外部变量,需要在定义的时候加extern,比如extern const int MAX_NUM = 100;
  • 不要在头文件中定义全局变量,否则多个源文件包含该头文件的时候会出现重复定义的链接错误
  • 如果外部变量是数组,声明的时候可以省略数组长度,比如extern int arr[];是合法的
总结来说,c++中使用外部变量的核心就是通过extern关键字声明其他文件定义的全局变量,遵循先定义、再声明、后使用的原则,就可以实现跨文件的变量共享。

c++extern外部变量全局变量跨文件变量修改时间:2026-06-21 17:30:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。