• 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链接属性。

  • 相关阅读:
    网络设备snmp配置syslog方法。
    Oracle19c安装手册Windows及mysql-oracle转换
    Oracle11g--hxss安装
    VMWare ESXI 6.5 的部署及简单使用的说明
    windos下redis的启动与安装
    二、fidder 和 python结合进行 get post 请求发送
    一、fidder工具使用
    Python学习二《数据类型介绍》
    Python学习一《基础规范》
    Charles设置为代理服务
  • 原文地址:https://www.cnblogs.com/yangxunwu1992/p/5767624.html
Copyright © 2020-2023  润新知