C/C++查缺补漏 — 006、P36 – P52函数\内存\变量\宏

[视频地址](https://www.bilibili.com/video/BV1FA411v7YW?share_source=copy_web “”视频地址””)

函数

  • 导入系统函数用尖括号<>,自定义函数用双引号””””, 如:#include “”myfun.h””
  • static修饰静态函数,只能在当前文件中使用​

内存

  • %p打印的是虚拟内存地址​
虚拟内存的用户空间
  1. 堆:动态申请内存时,在堆里开辟内存
  2. 栈:主要存放局部变量
  3. 静态全局区:【未初始化的静态全局区】:存放未初始化的静态变量、全局变量;【初始化的静态全局区】: 放在全局变量、静态变量初始化后存
  4. 代码区:存放编写的代码
  5. 常量区:存放常量​

变量

  • 调用不同文件的全局变量需要先声明,但不需要赋值,如:extern int val;
  • static修饰静态变量,静态局部变量只会初始化一次,函数执行完后不会释放内存,只能在当前文件中调用​

  • 宏名字一般大写
  • 带参宏,#define S(a,b) abb,宏定义只是简单替换,不考虑运算级别,可以添加括号保证运算顺序#define S(a,b) ((a)(b)(b))​

带参宏和函数的区别在于

  1. 带参宏占用空间较大,运行较快
  2. 函数占用空间较小,运行较慢
  3. 函数的形参必须有类型名,带参宏形参不需要类型名