美文网首页
define const static

define const static

作者: 若水water | 来源:发表于2022-07-21 17:31 被阅读0次
预编译

预编译 是做些代码文本替换的工作。
处理#开头的指令,比如#define宏定义#include 包含的文件代码,条件编译等,就是为编译做的预备工作的阶段。

内存区域

:在函数执行时,函数内部的局部变量(不包括静态局部变量)存在栈中,函数结束时这些存储空间自动被释放。
:动态分配内存使用的区域,通过malloc或new创建,使用完之后我们需要手动释放,否则认为产生了内存泄漏。即使程序运行结束后,机器会自动释放堆。
静态存储区:这一块的内存在程序编译时就已经存在了,主要存放静态变量,全局变量和常量等。

局部变量和全局变量

局部变量:他在程序运行期间不是一直存在,只有在函数调用时存在,在函数退出时销毁。
全局变量:全局变量具有全局作用域,只需要在一个源文件中定义就可以在所有cpp文件中使用,通过extern关键字声明。
静态局部变量:静态局部变量只在初次调用的时候初始化,直到程序关闭。静态局部变量的作用域是局部的,只对定于他的函数可见。
静态全局变量:静态全局变量与全局变量一样具有全局作用域,但是有所不同的是,因为有static关键字修饰,所以不能被其他cpp文件extern,即使在其他cpp文件中出现同名变量,也只是另一个全新的个体。

define 和const
  • define 是宏定义,是在预编译阶段就进行了文本替换,没有类型检查,也不分配空间,所以程序中不可修改(因为没有内存地址)
  • const 是在编译阶段处理,有类型检查,会有错误提示
  • define 可以定义一些简单的函数,而const 只能定义常量
  • 大量的使用宏,会造成编译时间久
  • 苹果官方不推荐我们使用宏,推荐使用const常量
static 和 const
  • static 修饰的局部变量,改变了变量的存储区域,本来局部变量是放在栈区,超出其作用域(当前函数或代码块)就会被释放,但是static修饰后,存储区域放在了静态区(全局数据区)(编译时就分配了内存),程序结束时才会被释放,但是其作用域还是函数或代码块内部。下次访问的还是同一内存的数据。
  • const 修饰的变量为只读的,不可以修改。当其修饰全局变量时,可以通过extern 关键字 让所有文件都可以访问。
  • static 和 const 一起使用,是为了将常量的作用域限制在当前声明的文件内,其他文件不可以访问。(不可以使用extern 暴露出去,不然会报错)

参考:
https://www.csdn.net/tags/MtjaAgxsODU5NzYtYmxvZwO0O0OO0O0O.html

相关文章

  • iOS中 static、const、extern、define

    1、 static、const、extern、define(1)define—const—-苹果推荐使用const...

  • #define const static

    iOS 宏(define)与常量(const)的正确使用

  • const、static、define

    前言 接下来可能还有一些文章,应该都是根据面试总结的答案,文章很好,值得学习。基本都是oc部分的,只能怪自己太懒散...

  • define const static

    预编译 预编译 是做些代码文本替换的工作。处理#开头的指令,比如#define宏定义,#include 包含的文件...

  • iOS 定义常量

    常量定义的方式: #define extern const static const FOUNDATION_EXP...

  • iOS -> 正确使用static、extern、cons

    1、const与宏 #define 的区别: 2、static与const结合使用 3、extern与const ...

  • static const extern define

    了解static 与 const的使用 看我上一篇文章.iOS写法优化,苹果推荐是使用const.下面我把整理的区...

  • const / define / static / extern

    一、全局变量 / 宏 / 常量 比较 全局变量: int age = 20; 缺点:能修改,优点:内存中只保存一份...

  • define const extern static

    define :预编译处理 不做检查 消耗内存 可以定义函数 const :字符串常量,不能定义函数,效率高 是一...

  • define const extern static

    define :预编译处理 不做检查 消耗内存 可以定义函数 const :字符串常量,不能定义函数,效率高 是一...

网友评论

      本文标题:define const static

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