• 作用域 属性链接 存储类型


    一:作用域:

    4中不同类型的作用域:代码块作用域,函数作用域,文件作用域和原型作用域

    1:代码块作用域:

    一对花括弧的代码称作一个代码块,任何在花括弧开始声明的标识符都具有代码块作用域

    形参隐藏的问题:

          K&RC中,形参在函数体外的声明中开始变生效,如果在函数体内有同名的表示服,他们就会将形参隐藏。
          ANSIC中避免了这种情况,他把形参的作用域定义在函数最外层的那个函数体,也就是整个函数体,这样,声明与函数最外的局部变量无法和形参同名,因为他们的作用域相同
    2:文件作用域:

    任何在所有代码块之外声明的表示符都具有文件作用域

    3:原型作用域:

    函数原型中声明的参数名

    只是为了防止名字冲突,但是并不是很有必要

    4:函数作用域

    他只是适用于语句标签,语句标签用于goto语句

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------分割线

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    标识符的链接属性决定如何处理在不同文件中出现的标识符,标识符的作用域和他的连接属性也有关系,但是这两者并不是完全一样

    链接属性一共有三种,external(外部的),internal(内部的)和none(无)

    none的链接属性被当做单独的个体,也就是该标识符的多个声明被称为独立的个体

    internal属性的标识符在同一个文件中的被认为是一个实体,不同的文件中被认为是不同的实体,

    external属性的标识符在不同的文件,无论被声明多少次都被认为是一个实体

    关键字extern和static用于改变标识符的链接属性,如果某个标识符是external属性的,加上static会被改为internal属性,但是static只对确性条件下为external属性的标识符才会起到改变连接属性的作用

    extern指的是为一个标识符声明为external链接属性

    但是extern只在第一次声明有效,如果又多次对同一个标识符进行声明extenr类型,只要第一次会起到效果

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    存储类型

    变量的存粗类型是指存储变量值得内存类型,有3个地方可以存粗变量,普通内存,堆栈,硬件寄存器

    变量的缺省存粗类型取决于他的生命位置,凡是代码快之外的标识符都存放在静态内存中static,,在代码快内部申明的变量都存放在堆栈中,称为自动变量auto

    **********修改代码的存储类型并不代表修改了标识符的作用域

    **********函数的参数不能声明为静态的,因为实参寄存于堆站中,实参要向形参中传参

    最后,关键字register可以用于自动变量的声明,提示他们应该存在寄存器中,这类变量也称为寄存器变量,通常寄存器变量的访问往往比内存的访问效率高,但编译器并不一定那么做,如果resister类型的变量过多,编译器只是选择前几个进行声明,其他的补多关心,

    static关键字:

    当他用于定义函数或者定义代码快之外的变量时候,static只是改变了关键字的连接属性,并不改变作用域和存储类型

    当他定义在代码块的局部变量的时候,static改变了存粗类型,,但是链接属性和作用域并没有改变

  • 相关阅读:
    (转)IDEA ERROR:找不到或无法加载主类
    Piggy-Bank
    Monkey and Banana
    Max Sum Plus Plus
    Doing Homework
    繁繁的游戏
    看试卷
    繁繁的队列
    大整数乘法
    文件操作(c++)
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/5582613.html
Copyright © 2020-2023  润新知