• <C和指针---读书笔记3>


    变量的作用域

         作用域分成:  代码块作用域,文件作用域,原型作用域,函数作用域。

    代码块作用域:    { }里面的称为代码块,凡是在 代码块开始位置声明的变量都 具有代码块作用域,即可以在{ }里面访问。

    文件作用域  声明于花括号外面的 变量都具有文件作用域。即在该文件内可以访问。

    原型作用域:   是指那些函数原型中的声明。基本没啥施展的地方。  

    函数作用域goto语句才有,希望永远不要用

    这样看主要是理解:  代码块内核代码块外的区别。

    链接属性

         当各个源文件被分别编译后,怎么才能访问调用别的文件里面的变量?

    链接属性共有三种: 

    分类

    默认

    用途

    External

    代码块外的变量和函数,均默认具有external属性

    可以被其他文件引用

    Internal

    除非特别指定,默认不存在internal属性

    使用static强制变为内部变量

    None

    除了代码块{}外,其余所有的都默认是none属性

    --

    External链接属性,是允许其他文件引用的,但是在使用前需要声明。而且要特别声明为 extern int a

                  这是因为,源文件编译的时候,是一个一个文件检查语法的,如果使用前不声明,就会报语法错误

                  特别声明为extern 类型,我理解是为了 明确告知程序员,这个变量的源在其他文件内。

                 这里指出,函数不需要声明,也不要特别声明extern ,可以拿过来直接调用。(这个原因我还没理解。。。)

    None属性: 默认情况下,代码块内的东西属于none属性。不过没啥意义

    Internal属性:  在代码块外声明时,可以加上关键字 static,就会把 原本默认external属性的变量、函数强制变为internal。

    仅供该文件内部使用。

    存储类型

         变量有三个存储位置:  RAM、堆栈、register

    分类

    变量源

    RAM

    代码块外声明的变量都默认会存储在RAM,时钟保持。

    不管前缀不缀static

    堆栈

    代码块内声明的变量默认会存储在堆栈中,随用随销毁

    变量前缀static, 会把存储为变更到RAM中去

    Register

    需要特别指定,才会存在register

    补充:

    函数原型 &  函数原型声明  & 函数定义

    在早期C语言中  ,调用函数之前,  需要声明函数名字、返回值信息,如  double  sqrt();   但是呢不声明参数列表。这样在实际使用中可能会  sqrt(10), sqrt(1.4,9)

     我们希望能规范的调用函数,当参数列表出现异常时,能警示我们。故而现代C中,函数原型声明,需要  返回值、函数名、参数列表类型声明。这样编译器在后续碰到调用情况时,

    会自动的去判断 传参列表是否对应。  以上称之为 函数原型、及其声明。

    函数定义:  函数定义是指,实现函数body。  如  int sqrt  ( int i)    { return  I * I }  

  • 相关阅读:
    GoldenGate配置(一)之单向复制配置
    Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发
    Linux用户及用户组设置
    HDU1013_Digital Roots【大数】【水题】
    随意一条查询sql转换为查询结果集相应的数目
    对文件地址的几种概念的理解
    2014-10深圳全球架构师峰会
    有沃更精彩,沃课堂理想的移动学习平台
    自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明
    Inno Setup入门(二)——修改安装过程中的图片
  • 原文地址:https://www.cnblogs.com/mokang0421/p/7352675.html
Copyright © 2020-2023  润新知