美文网首页
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语言变量储存

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

  • 栈基础知识

    1.C语言变量的分布 : C 语言有全局变量(Global)、本地变量(Local),静态变量(Static)、寄...

  • C语言内存

    在阐述C语言内存布局之前,首先我们来介绍一下C语言变量的类型;在C语言中的变量类型有自动变量,全局变量,静态变量以...

  • C语言快速入门 - Hello World 详解

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 简单运算符

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 控制语句

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 变量

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • Golang 通过反射的方式调用结构体方法

    在Go语言中,反射就是用来检查储存在接口变量内部pair对的一种机制,pair对是以值(value)和实际类型(c...

  • C语言----变量

    变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的...

网友评论

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

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