C++里定义和声明的区别

定义

1、定义只能定义一次,定义多次编译时会报重复定义的错误
2、定义时系统会为变量在内存中分配存储空间
3、定义时可初始化也可不初始化,全局变量和静态变量系统会给一个默认的初始化0

声明

1、声明时不分配内存,但是会生成一个符号,用于在连接阶段找到真正定义的位置,这中间还存在一个符号选择的问题;
在C语言中,函数和初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号。
对于它们,下列三条规则使用:
① 同名的强符号只能有一个,否则编译器报"重复定义"错误。
② 允许一个强符号和多个弱符号,但定义会选择强符号的。
③ 当有多个弱符号相同时,链接器选择占用内存空间最大的那个。
C++中没有强弱符号之分

2、可以多次声明,加上extern就好了
3、也可初始化也可不初始化,一般不初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值