1.内存分区
意义:不同区域数据赋予不同的生命周期,我们可以更加灵活的进行编程的管理;
(1)代码区:存放二进制的机器指令,
代码区的两个特点,
一个是共享的,就是无论我们运行多少次这个程序,内存里面都会有一份,而不会进行拷贝;
另外一个特点是只读的,什么是只读呢,就是我们无法进行写的操作,防止程序意外的修改指令;
(2)全局区:全局变量,静态变量(static修饰的变量),常量等等
常量分为字符串常量,const修饰的全局变量(const修饰的全局变量在全局区,const修饰的局部变量不在全局区);
该区域数据特点:程序结束,操作系统管理释放
(3)栈区:由编译器管理分配和释放;-------不要返回局部变量的地址
栈区存放的是形参和局部变量
(4)堆区:由程序员开辟和释放;
我们在堆区上使用new关键字开辟空间,把int类型的数据10的地址传递给p指针(也就是说返回的是指针),指针是在栈区的,指针指向的10是使用new在堆区开辟的;
(5)mew运算符的使用:在堆区开辟空间,使用delete释放空间;
我们使用delete把在堆区开辟的空间释放掉,释放之后如果还要打印,就是非法访问了;
(6)mew运算符开辟数组:我们需要使用中括号(小括号表示开辟一个元素的空间),利用循环进行赋值和打印,最后释放,释放的时候要加上中括号(表示我们要释放一段很长的空间);
2.引用
(1)引用的基本语法
引用就是取别名,基本的格式就是 数据类型 &别名=原名,原名和别名指向的是同一块内存空间;对别名的修改同样会影响原名 ;
(2)引用的注意事项
1.必须要初始化,2.引用初始化以后,不能更改引用
理解:必须初始化就是不能只写int &b却不告诉编译器这个b是哪个变量的引用,这样做是不行的,我们必须为b指定一个引用的对象;不能修改就是我们的int a=10;int b=20;原来我们的int&c=a;后来我们想要进行修改,我们写的是b=c,这样写并不能够修改引用的对象,而是进行的赋值;
(3)引用作为函数的参数
我们利用数据的交换认识一下引用如何作为函数的参数;
(4)引用作为函数的返回值
不要返回局部变量的引用,而且使用引用时,函数可以作为左值修改变量的大小;
(5)引用的本质
引用的本质是指针常量:
(6)常量引用
引用通常用来修饰实参:这样就可以防止一些操作改变实参的数值。