c++程序在运行的过程当中,内存会被划分为如下四个分区html
代码区:程序的全部程序的二进制代码,包括注释会被放到此区ios
全局区:存放静态变量、全局变量、常量(字符串常量和const修饰的常量),此区的数据将在程序结束后由操做系统释放c++
栈区:用于存放局部变量、函数参数等,是由编译器自动释放和分配,因此不能让栈区返回一个地址,程序员
堆区:存储对象(使用new操做符,后面会介绍)由程序员分配释放,若咱们不释放,程序结束由操做系统释放编程
c++中经过new关键字将数据开辟到堆区数组
若是是new一个数组app
注意函数
代码区和全局区是程序编译成exe可执行文件的时候就已经有了,可是栈区和堆区是程序exe文件执行后产生的url
将不一样的数据放在不一样的区域,赋予不一样的生命周期,提升编程灵活程度spa
使用引用给一个变量起别名
前面文章中的地址传递会修改实参,值传递不会修改实参,引用做为函数参数会修改实参,简化使用指针修改实参的复杂过程
局部变量不能做为函数的返回值返回
若是是局部静态变量,能够返回
引用本质是指针常量
常量引用
前面c++基础系列有关函数知识有所描述,这里补充一些函数高级知识
1.c++中函数能够有默认值
2.c++函数中能够有占位参数用来占位,调用函数必需填补该位置
3.函数重载
定义:同一个做用域下,两个函数参数类型不一样或者参数顺序不一样或者个数不一样。此时这两个函数名字能够相同。提升复用性
注意:函数返回值不能做为函数重载的条件
4.引用也可做为函数重载条件
5.函数重载遇到默认参数须要注意