zoukankan      html  css  js  c++  java
  • C和指针 第三章 链接属性 extern、internal、none

    三种链接属性

      组成一个程序有多个源文件,如果相同的标识符出现在多个源文件中,那么标识符的链接属性决定如何处理在不同文件中出现的标识符。

      链接属性有三种:

    external:外部   多个源文件中的相同标识符指向同一个实体

    internal:内部  同一个源文件中标识符指向同一个实体

    none:无     当做单独的实体,只有在代码块内部出现,每次出现都是不同的独立实体。

    typede char *a;
    int b;
    int c(int d)
    {
        int e;
        int f(int g);
    }
    

      其中,b,c和f为external属性,其他均为none。内部代码块和形参都是none属性。

      只要变量并非声明于代码块或函数定义内部,他在缺省情况下链接属性为external储存类型为静态储存代码块内部使用extern可以使用它所引用的值是全局变量而非局部变量。

    改变链接属性

    关键词:externstatic用于修改标识符的链接属性。 

      当给b加上,static就就可把external属性,改变为internal属性。使得b是当前源文件的私有变量。

      注意static只对链接属性为external的声明有效,如果对上面的e加上static是没有效果的,因为e的默认链接属性是none,而不是external。

      extern为标识符指定external属性,这样就可以访问在其他位置定义的实体。

    static int i;
    int function()
    {
        int j;
        extern int k;
        extern int i;
    }
    

      上面的声明k的external属性,这样既可以访问在其他地方定义的k实体了。当具有文件作用域时,这个关键词是可选的,不过加上extern可以让其他人更倾清晰的明白你的意图

      当extern用于源文件中一个标识符第一次声明时时表示有external属性,但是第二次或者第三次,它不会更改由第一次声明所指定的链接属性。上面的i,第一次由static修饰的internal属性,随后extern int i;并不修改i的internal链接属性。

  • 相关阅读:
    HTML iframe, 获取iframe子页面中的元素(基于JavaScript)
    微信小程序中引入VR全景图
    git创建分支,提交代码详细流程(保姆级)
    Vue项目中使用Axios封装http请求
    node搭建本地服务器后端解决跨域问题
    ant design Upload组件上传文件类型
    使用nodejs连接mysql数据库实现增删改查 连接Node.js时报错“Cannot GET /”
    后端返回文件流,前端处理进行文件下载
    JS判断是否是数组的四种做法
    Js常用方法:JS字符串截取、数组截取等
  • 原文地址:https://www.cnblogs.com/yangxunwu1992/p/5767624.html
Copyright © 2011-2022 走看看