C和指针 第三章--数据

简要概述:

  《C和指针》第三章对数据进行了描述。

  其中主要讲解了---变量的三个属性:作用域、链接属性和存储类型。

  这三个属性决定了该变量在“什么地方可以使用”以及“该变量的值能够保持多久”。

总结作用域:

1、文件作用域、代码块作用域、原型作用域和函数作用域

  文件作用域:在代码块之外声明的标识符 file scope

  代码块作用域:声明在{}中

  原型作用域:int getScore(int ucStudent); 该函数原型声明中,int ucStudent具有原型作用域

  函数作用域:这个不用管。

总结链接属性:

链接属性:external(外部链接属性)、internal(内部链接属性)和none(无链接属性)

链接属性的作用:标识的链接属性决定如何处理在不同源文件中出现的标识符。

例如,相同的标识符A出现在不同的源文件中,当这些源文件编译后形成目标文件,

下一步进行链接形成可执行文件时,这些A表示同一个实体还是不同实体,由A的链接属性决定。

external:具有外部链接属性的标识符,无论声明多少次,不管存在多个源文件中,都表示同一个实体。

internal:当A具有intonernal链接属性,处于同一个源文件中的声明指向同一个实体,处于不同源文件中的多个声明分属不同的实体。

none:不管处于同一个源文件还是不同源文件的声明,均指向不同的实体。

1、具有文件作用域的变量默认均为“外部链接属性”

2、在函数内部或代码块中声明的变量默认为“none“

3、static 和 extern可以改变标识符的链接属性,但是具有如下限制:

  1)static :只对默认为external属性的声明才有改变的效果

  2)当extern关键字用于源文件中一个标识符的第一次声明时,具有改变链接属性的效果,但用于标识符的第二次或以后的声明时,则

  不会更改第一次声明的链接属性。

总结存储类型

存储类型指该变量存储变量值的内存类型。

静态 普通内存中 全局变量、static全局变量、static局部变量
自动存储类型 存储在堆栈中 局部变量
register 存储在寄存器中 register关键字修饰的变量
原文地址:https://www.cnblogs.com/welsh-android-learning/p/4068379.html