zoukankan      html  css  js  c++  java
  • C语言的存储类型和关键字extern、static

    1、C语言中每个变量都有3个性质:存储期限、作用域、链接

    1)存储期限:变量的存储期限决定了为变量预留的内存被释放的时间。共2种,自动存储期限(auto),静态存储期限(static),自动存储(auto)的变量在所属块被执行时获得内存单元,并在块终止时释放内存单元,自动的获得或释放内存,故名auto。具有静态存储的变量(static)在程序运行期间始终占有同一内存单元,静止不变,故名static。

    2)作用域:变量的作用域指可以使用该变量的那一部分程序文本。共2种,块作用域指从声明位置到所在块的末尾均可见,文件作用域指从声明的地方到文件的末尾均可见。

    3)链接:变量的链接指程序的不同部分可以共享此变量。共3种,外部链接指可以被程序中不同文件共享,内部链接指只属于单独一个文件,无链接指属于单独一个函数,而且根本不能被共享。

    2、变量的默认存储期限、作用域、链接均依赖于变量的声明位置。

    1)在块内声明的变量:自动存储期限、块作用域、无链接。

    2)在程序最外层(任意块外部)声明的变量:静态存储期限、文件作用域、外部链接。

    int i;  //静态存储,文件作用域,外部链接
    void f(void){
        INT J;   //自动存储,块作用域,无链接
    }

    3、static的特殊用途:

    1)当在块外部,static说明变量为内部链接,注意:本来在块外部声明的变量具有外部链接,加上static后,变为内部链接,则外部不可见了。

    2)当在块内部,static说明变量的存储期限为静态,注意:本来在块内部变量为自动存储期限。

    static int i;   //静态存储期限,文件作用域,内部链接
    void f(void){
        static int j;     //静态存储,块作用域,无链接
    }
  • 相关阅读:
    贪吃蛇 666
    安装postgresql
    linux CentOS6.5 yum安装mysql 5.6
    centos--git搭建之Gogs安装
    查看mysql 默认端口号和修改端口号
    centos之mysql安装配置使用
    流媒体服务器SRS部署
    vue用webpack打包时引入es2015插件
    log4j2的log输出到tomcat/logs目录下及使用(转)
    log4j2的配置文件log4j2.xml笔记
  • 原文地址:https://www.cnblogs.com/litifeng/p/7821095.html
Copyright © 2011-2022 走看看