C语言中变量的生存期及作用域介绍

c 语言中变量的初始化及生存期、作用域浅谈

生存期和作用域相关的关键字extern,static,auto,register
变量的初始化相关问题

关键字介绍

  1. extern
    extern 可以作用于变量,函数。所谓的外部变量是指定义在所有函数之外的变量。一般有两种,一种是定义在同一文件中,另一种是定义在别的文件中。同一个文件中的所有函数可以使用该文件中定义的外部变量而不要求必须用extern进行声明。函数如果想使用定义在不同文件中的变量,则必须利用extern关键字进行声明。extern就相当于一个引用声明。extern 作用于函数时类似。
    详细说明参见[http://blog.chinaunix.net/uid-22391661-id-1774382.html].
  2. static
    static 是一个神奇的关键词,因为其用法实在太繁杂。主要应用场景包括:作用于外部变量,作用于内部变量,作用于函数。作用于外部变量和函数的时候,作用和extern相反,表明外部文件无法使用该变量或函数。作用于内部变量时,对该变量在静态区进行一次内存分配,后面再次调用函数的时候,不用再次分配。
    详细说明参见[http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html]
  3. auto and register
    auto用来声明变量是自动的,也就是在运行的时候分配内存。一般在函数中定义的变量都是auto类型的。register指寄存器变量,不太常用。

变量初始化问题

全局变量和静态变量在进行初始化的时候全部清零。
局部变量如果未初始化,分配的值一般为0xcccccccc。但是通过在vs中的测试,发现字符数组初始化都为0,可能是编译器相关吧。
堆栈中分配的变量,一般系统默认为0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值