C语言中定义和声明

 1、怎样声明才可以使得变量能够在编译期间被恰当地声明?

2、怎样安排声明才能使得所有的声明片段都可以在程序载入时被连接?

3、声明怎么安排才能够只被复制一次?

4、外部变量如何初始化?

回答上述问题就涉及到变量在程序中的存在范围(scope),即那些函数可以访问到哪些变量。

 

区分外部变量的定义和声明非常重要:一个声明只是表明变量的属性(主要是类型);而定义除此之外还会进行内存分配预留(set aside)。

 

int sp;

double val[MAXVAL];

如果是在所有函数之外声明的(如在头文件中声明的),那么就相当于于定义了外部变量sp和val,引起内存分配,同时也可以作为代码文件其余部分的声明。

extern int sp;

extern double val[ ];

这两行代码则只是为代码文件的其余部分做了声明,即sp是int类型,val是double array类型,其大小在别的地方已经决定了,但是它们不能创建变量,也不能预留内存。

 

外部变量的初始化只能由定义来完成。

对于所有文件中的外部变量,只能定义一次。当别的文件要访问其时,要用关键字extern来表明。当然,数组的大小可以在定义中决定,也可以在extern declaration中决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值