c++ extern关键字和全局变量

本文详细解释了C++中extern关键字的作用,它用于声明而非定义变量。介绍了如何创建全局变量并在不同文件间共享,通过两种方法在其他文件中引用全局变量:extern声明或包含源文件。同时强调了在头文件中使用extern避免重复定义的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

extern 作用:用于声明变量前面,表示这是声明而不是定义,具体的定义在别的文件中。

int a; //这是定义

int a = 1; //这也是定义

extern int a; //这是声明

extern int a = 1;//这是定义,extern没用了。

一个变量只能定义一次,可以声明多次

 

想让一个变量变成全局变量该怎么做?即:想在一个文件中定义一个全局变量,然后在其他文件中可以被访问。

全局变量:在一个文件中定义,然后在别的文件中extern声明这个变量,就可以在这个文件中使用。

例如:

在test.cpp中:

int a = 1;

要在别的文件中使用变量a,有两种方法:

(1)

在 main.cpp中:

extern int a;

int b = a;//就可以使用a了。这里没有用include,但编译器知道去别的文件找a的定义。

(2)

在main.cpp中:

include “test.cpp”

int b = a;//这样也可以使用,因为include 就相当于把include 的文件合并到这个文件中来了。

方法二有一个问题,当多个文件要用这个全局变量a的时候,include这个文件多次,这样就重复定义了a多次,编译器报错:重复定义。

 

一般在c++中,变量和函数都在cpp文件中定义(在头文件中定义,如果被include多次会重复定义),然后定义的东西都在同名的头文件中声明,这样用这个文件的时候看简洁的头文件就行了。

所以一般在test.h中有extern int a; //用extern表示是声明

然后在test.cpp中,include "test.h"。这样cpp中定义的变量a,就是头文件中声明的a。

如果test.h会被include两次或两次以上,那么这个extern必须加,不加的话是定义,开篇讲到过。

当别的文件中想使用全局变量a时:

方法一:

extern int a;

方法二:

include "test.h" //因为这个头文件中有extern int a;

方法二更符合习惯。一般c++面向对象编程很少有单独的全局变量暴露在类外面,所以一般有全局变量的话,统一放到一个cpp文件中,在这个文件中定义,然后在同名的头文件中声明。要用这些全局变量的话,include这个头文件就行了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值