C语言之extern作用于指针、数组

本文探讨了C语言中extern关键字的用法,包括它如何声明全局变量并在不同文件间共享。文章通过实例展示了extern如何影响指针和数组,并解释了编译器对extern和static的处理方式,以及extern声明与定义的区别。同时,文章还提醒程序员注意及时备份以避免丢失工作。
摘要由CSDN通过智能技术生成

以下为测试环境:

gcc 4.3.2-1-1

GNU/Linux Debian 5.0

(刚开始使用csdn博客,没经验。由于中间调试时间较长,忘了备份,刚写完,赶紧发了。一看,没有;再看,还是没有。挥去愤怒,重写一篇。望读者以此为鉴,及时备份。:-)

1、extern与static

extern 对变量、函数声明;编译时可见,即告诉编译器:“老兄,虽然这个文件里,我没有定义,但在别处定义了,你得放过我”。而出于检查和使用的需要,没有定义是不能放行的。

函数和变量都默认为extern的,在链接时所有文件可见;更甚的是默认为不加static和extern即为定义,这也就带来的extern显性声明的必然性。这将在后面详细分析。

 

static,字面意思是静态限定符,用于三种场合可产生三种效果:

a、作用于局部变量,在函数的生存期其值具有连续性,如何理解,通俗但不准确的表达:被初始化一次,以后每次调用该函数时继续上次的结果。譬如:

 1 #include <stdio.h>
 2
 3 #define COUNT 3
 4 static stat_count = COUNT - 1;
 5 int stat()
 6 {
 7         static count = COUNT;
 8         
 9         count --;
10         printf("the result in N.O. %d invacation : %d./n", stat_count, count);
11         return count;
12 }
13 int main()
14 {
15         while(stat())
16                 stat_count --;
17         return 0;
18 }

 

the result in N.O. 2 invacation : 2.
the result in N.O. 1 invacation : 1.
the result in N.O. 0 invacation : 0.

 

b、作用于全局变量,只在本文件作用,其相对的是extern。具体比较将在后面分析。


c、作用于函数,仅供本文件其它函数调用,函数和变量都默认为extern。不是本文重点,不作具体分析。

 

抽象点,具有三个作用:

隐藏全局可见性;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值