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. 根据函数能否被其它源文件调用,将函数区分为内部函数外部函数

    总结

  • 相关阅读:
    重新认识数据库的链接查询
    mysql删除一张表中的重复数据
    mysql数据库里复制一张表的SQL,报错 (1786
    case when的使用场景。
    python:浅析python 中__name__ = '__main__' 的作用
    Group(), Groups(),& Groupdict() 用法
    python re模块findall()详解
    练习题(第二模块...模块...选择填空)
    subprocess模块 sys模块
    json,pickle,shelve模块,xml处理模块
  • 原文地址:https://www.cnblogs.com/zgglj-com/p/12678019.html
Copyright © 2011-2022 走看看