zoukankan      html  css  js  c++  java
  • C语言学习笔记-变量存储

    1. 怎样确定常量的类型呢?从常量的表示形式既可以判定其类型,举例来说:只要看到由单撇号括起来的单个字符或转义字符就是字符常量。也可以在常量的末尾加专用字符,强制指定常量的类型。

    2. 从变量的作用域(即从空间)的角度来观察,变量可以分为全局变量局部变量

    3. 变量的存储有两种不同的方式:静态存储方式动态存储方式

    4. 在动态存储区中存放以下数据:

      • 函数形式参数。在调用函数时给形参分配存储空间
      • 函数中定义的没有用关键字static声明的变量
      • 函数调用时的现场保护和返回地址等
    5. C语言存储类别包括4种:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。根据变量的存储类别,可以知道变量的作用域和生存期

    6. 局部变量的存储类别

      • 自动变量(auto变量)。函数中的局部变量,如果不专门声明为static存储类别,都是动态的分配存储空间的,数据存储在动态存储区中。函数中的形参和在函数中定义的局部变量都属于此类。

      • 静态局部变量(static局部变量)。特点:如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0或空字符。虽然静态局部变量在函数调用时结束后仍然存在(表明它可以只被赋值一次),但其它函数是不能引用它的。

        用static声明一个变量的作用:①对局部变量用static声明,把它分配在静态存储区中,该变量在整个程序执行期间不释放。②对全局变量用static声明,则该变量的作用域只限于本文件模块

      • 寄存器变量(register变量)。有些时候我们不需要显式的将变量指定为register,因为优化后的编译系统能够自动为一些经常使用的局部变量指定为register变量。

    7. 全局变量的存储类别

      • 扩展全局变量的使用范围可以用extern,比如在变量未声明前使用变量,或者在一个文件中使用另一个文件定义的全局变量:

        #include<stdio.h>
        
        int main()
        {
            extern A, B, C;     // 也可以写成 extern int A, B, C; 注意这样写并不代表是在声明3个变量
            scanf("%d %d %d", &A, &B, &C);
            return 0;
        }
        
        int A, B, C;
        
        int print()
        {
            printf("%d %d %d
        ", A, B, C);
        }
        

        如果要限定声明的全局变量只能在本文件使用,则要在全局变量加上static。

    8. 声明和定义:把建立存储空间的声明称为定义,而把不需要建立存储空间的声明称为声明

    9. 根据函数能否被其它源文件调用,将函数区分为内部函数外部函数

    总结

  • 相关阅读:
    ASE19团队项目 beta阶段 model组 scrum report list
    ASE19团队项目 beta阶段 model组 scrum7 记录
    ASE19团队项目 beta阶段 model组 scrum6 记录
    ASE19团队项目 beta阶段 model组 scrum5 记录
    ASE19团队项目 beta阶段 model组 scrum4 记录
    ASE19团队项目 beta阶段 model组 scrum3 记录
    ASE19团队项目 beta阶段 model组 scrum2 记录
    ASE19团队项目 beta阶段 model组 scrum1 记录
    【ASE模型组】Hint::neural 模型与case study
    【ASE高级软件工程】第二次结对作业
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/12678019.html
Copyright © 2011-2022 走看看