内存分区图示

各个内存区域的说明
代码区(Code)
-- 代码不变的
-- 分配, 释放方式 : 编译器分配内存, 程序退出时系统自动释放内存;
-- 存放内容 : 存放函数体的二进制代码(所有的可执行代码)。
比如: int a;就不是可执行代码,而是只在内存中申请了一个
空间而已,
a=10;是可执行代码;
静态区
-- 存放的是静态变量static 和全局变量
-- 分配, 释放方式 : 编译器分配内存, 程序退出时系统自动释放内存;
-- Static
static 关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用
static 关键字修饰变量时,我们称此变量为静态变量,只初始化1次。
全局静态变量
--静态存储区
--默认初始化为0
--全局静态变量在声明他的文件之外是不可见的。准确地讲从定义
--之处开始到文件结尾。
局部静态变量
--静态存储区
--默认初始化为0
--作用域仍为局部作用域
Static局部变量&全局变量 总结
-- 局部变量 加上 static , 相当于将局部变量的生命周期扩大到了整个文件, 作用域不改变;
-- 全局变量 : 全局变量 加上 static , 相当于将全局变量的作用域缩小到了单个文件, 生命周期是整个程序的周期;
栈区 (stack)
-- 分配, 释放方式 : 由编译器自动分配 和 释放;
-- 存放内容 : 局部变量和形式参数;
-- 特点 : 具有 后进先出 特性, 空间小,容易发生栈溢出。
堆区(heap)--之后详解
-- 分配, 释放方式 : 由程序员手动 分配(malloc) 和 释放(free),[谁申请谁
释放]
-- 存放内容 : 存放程序运行中 动态分配 内存的数据;
-- 特点 : 不需要满足先进后出的结构,而且可使用空间较栈区大的多,
大小不固定, 可能会动态的 放大 或 缩小;
-- 堆区使用不善会导致内存泄漏
流程控制
if语句
单分支
if(条件表达式)
{...}
当条件表达式为真的时候执行,假的时候不执行
if ...else
if ...else if...else
注意:else后面没有小括号,当有多个else的时候,else总是和上方最近的if配对。
switch
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;
…
case 常量表达式n: 语句n;
default: 语句n+1;
}
注意:switch括号里面可以是整型、字符型、枚举型表达式,而case后面只能是常量表达式(整数或者是结果为整数的表达式,但不能包含任何变量),而且后面的常量结果不能相同。
while do...while for
参照课上笔记部分,有详解。
数组
语法部分参照课件,未完待续day04