c语言变量声明举例,C语言变量的定义和声明

今天犯了一个低级的错误,在头文件中定义了一个变量,而该头文件被多个源文件调用,导致该变量重复定义。然后我就把改变量改成static类型的了,这下编译倒是不出错了,就是结果跟我想象的不一样,在一个文件中改了,而在另一个文件用的时候,结果为0.

然后发现这个错误好低级,正确的用法是在源文件中定义,在头文件中声明,而别的源文件想用,就引用该头文件。

我们来说说定义和声明的关系:

定义:指有这么个东西,而且就放在这。

声明:仅仅指有这么个东西,它是在别的文件中定义的。

所以定义只能一次,而声明是可以多次的,在编译器编译的时候,只有变量定义的文件所生成的中间文件会有该变量的信息,其它声明该变量的文件中,不会有该变量。

其实还遗留了一个问题,为什么在头文件中用static修饰变量就不会报重复定义的错误了?

这是因为每个包含该头文件的源文件中都会有一个属于它们自己的变量,注意:虽然只在头文件中定义了一次,实际的结果是每个包含该头文件的源文件都会定义一个相同名字的变量,但是有多少源文件引用,就定义了多少个变量,而且每个源文件只能访问属于它自己的变量(因为是static的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值