何为声明 何为定义

本文介绍了C++中变量的声明与定义的区别,探讨了如何通过extern关键字来声明全局变量,并解释了可以在头文件中定义const变量、类及inline函数的特殊情况。

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

c++primer上写

C++程序由多个文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义。

定义写在CPP中,需要被其它文件使用的变量用extern声明在.h文件中。

三种情况例外:

1)值在编译时就已知的const变量的定义可放在头文件中,如:const int num=10;
2)类的定义可放在头文件中。
3)inline函数。

变量的定义(definition)用于变量分配存储空间,还可以为变量指定初始值,在一个程序中,一个变量有且只有1次定义。

变量的声明(declaration)用于向程序表明变量的类型和名字。

 

注意的是,定义也是声明。当定义变量时,我们声明了它的类型和名字。可以通过使用extern关键字声明已经定义了的变量。

int i;//定义
extern int i;//声明这个变量在外部定义了,但不是定义。


extern声明不是定义,也不分配内存空间,事实上,它只是说明变量定义在程序的其它地方。程序中,变量可以声明多次,但定义只能一次。

如果声明有了初始化,那么它可以被当做定义,即使声明使用了extern关键字。

extern int i = 1; //定义
extern int i; //声明
extern int i = 2; // 重定义,error

 

只有全局变量并且没有被static声明的变量才能声明为extern。所以,如果你不想自己源文件中全局变量被其他文件引用,你就可以给变量加上static声明。

这里说的是非const的全局变量,如果是const的全局变量,如果想被其他文件访问,需要在定义时,加上extern关键字,表示它可被其他文件声明使用的。否则的话,这个变量只能在它被定义的文件里面被访问,其他文件不能访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值