存储类型

    标准C语言为变量,常量和函数定义了4种存储类型,即:extern, auto, static, register. 这4种存储类型可分为两种生存期限:永久的(即在整个程序执行期间都存在)和临时的(即暂时保存在堆栈和寄存器中)。       extern和static用来标识永久生存期限的变量和函数,而auto和register则用来标识临时生存期限的变量(注意,只有变量才具有临时生存期限),一个变量或函数只能有一种存储类型,当然也只能有一种生存期限。

    默认情况下,全局变量和函数的存储类型为extern,能够被定义在它们之后的同一个编译单元内的函数所调用。如果变量被显式地加上extern声明,那么其他编译单元中的函数也能调用它们。
    显式地声明为static的全局变量和全局函数具有static存储类型,只能被同一个编译单元内的函数调用。
    局部变量默认具有auto存储类型,除非用static或register来定义。但不管如何,它们的作用域都是程序块作用域,连接类型都是内连接的,在进入函数的时候创建,在函数退出的时候销毁。register和auto只能用于声明局部变量和局部常量。
    全局常量的默认存储类型为static的,除非在定义了它的编译单元之外的其他编译单元中显式地用extern声明,否则不能被访问。
    局部符号常量的默认存储类型为auto,除非显式地定义为static或register。
    函数的形参是局部变量,因此与一般局部变量的存储类型相同,但是最好不要声明为static。

posted on 2010-10-12 09:45  ltang  阅读(711)  评论(0编辑  收藏  举报

导航