美文网首页
C语言变量储存

C语言变量储存

作者: AuglyXu | 来源:发表于2018-09-09 16:01 被阅读0次

    auto

    • auto: 特点就是告诉编译器, 局部变量离开作用域自动释放 -----> 它是个废物

    register

    • 特点就是告诉编译器, 将局部变量存储到CPU寄存器中
    • 好处就是访问的速度会更快, 但是在不同平台,不同编译器下, 会做不同的优化, 所以还是一句废话, 所以了解 --> 忘记

    static

    • static对局部变量的作用

      • 如果利用static修饰局部变量, 那么会将局部变量的存储区域从栈区移动到静态区

      • 静态区只有程序结束才会释放

    • 应用场景:

      • 优化代码, 提升代码的效率
    void calculate(int r){
        // PI使用的概率非常大, 如果是一个局部变量的话, 每次调用都会重新开辟存储空间, 这样性能不好
        // 如果PI是static的变量, 那么只会开辟一次, 那么性能就会好很多
        static double pi = 3.1415926;
        return r * r * pi;
    }
    
    • static对全局变量的作用

      • 定义一个内部的全局变量,

      • 1.该变量只能在定义的文件中使用, 不能在其它文件中使用

      • 2.并且该变量会独占一块内存空间

    • 出现的原因:

      • 全局变量的特性:
        • 可以定义多个同名的全局变量, 多个同名的全局变量共享一块内存空间

        • 哪怕不是同一个文件中的同名全局变量, 也会共享同一块内存空间,这样会导致数据混乱

    • 注意点:

      • 局部变量如果没有初始化, 里面存储的是垃圾数据

      • 全局变量如果没有初始会, 系统会自动初始化为0


    extern

    • extern对局部变量的作用

      • extern用于声明一个变量, 声明变量并不会开辟存储空间

      • extern一般用于全局变量, 至今没见过有人用extern来修饰局部变量(原因:局部变量, 只有执行到那一行代码才会分配存储空间, 所以哪怕声明了 ,但是在使用时还是没有分配, 所以还是不能存储数据)

    • extern只用于全局变量, 不用于局部变量

      • 原因:全局变量, 会随着程序的启动分配存储空间, 所以只要声明了, 使用时已经分配好了存储空间, 一定能够使用, 一定能够存储数据

    extern和static对函数的作用

    1.如果利用extern修饰函数, 代表这是一个外部函数, 其它文件中也可以使用,默认函数就是外部函数,所以extern在这里是个废物

    2.如果利用static修饰函数, 代表这事一个内部函数, 只能在当前文件中使用

    • 如果一些内部函数不想提供给外界使用, 那么就可以给函数添加一个static
    • 注意点: extern和static必须写到函数的实现中才有效, 不能写到函数的声明中
      • 并且如果一个函数已经被声明为static的了, 那么在.h文件中就不要编写该函数的声明了

    多人开发

    • 在企业开发中, 不可能将所有的代码都写到一个文件中,这样会导致文件内容较多, 不利于我们阅读和后续维护

    • 而且在企业开发中大部分都是多人开发, 多人开发就是多个人一起写一个项目,所以也不可能多个人同时操作同一个文件

    • 所以在企业开发中, 都是多人同时操作多个不同的文件 --> 多文件开发

    如何进行?
    • 一般情况下会将业务逻辑代码, 编写到.c文件中, 同时会将.c文件中需要暴露给外界使用的方式名称的声明写到.h文件中
    • 编写了.c文件还需要编写一个.h文件的原因:业务逻辑代码是你编写的, 那么函数的作用,形参你最了解, 所以应该由你来编写
    注意点
    • 在企业开发中, 其它人不需要关系函数具体是如何实现的, 只需要关心如何使用这个函数即可

    • 所以函数的业务逻辑和声明都应该让同一个人来完成

    #include的作用:
    1. 将后面指定文件中的内容拷贝到当前文件中

    2.<>从系统的环境变量中去拷贝, 一般情况下只有用到系统函数才使用<>

    1. ""从指定的路径中去拷贝, 一般情况下使用同事/自己编写的.h文件都用""
    配置文件初步了解

    相关文章

      网友评论

          本文标题:C语言变量储存

          本文链接:https://www.haomeiwen.com/subject/fqorgftx.html