C++第二阶段知识

1.常量指针和指针常量
只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。
谁在前面谁就不允许改变,指针和 const 谁在前先读谁
指针常量:int *const p2 = &c; ( 是指针,是常量,指向的地址固定,需要赋初值)

常量指针:int const *p1 = &b;(指向常量,这个指针不能修改常量的值)
是限制了通过这个指针修改变量的值
2.内存空间
程序运行前分为代码区和全局区:
代码区:存放二进制机器指令。共享性,只读性
全局区:全局变量和静态变量,常量。程序结束被操作系统释放
(不包括局部常量/局部变量)
静态变量:static( int)
常量:字符串常量,const修饰的变量
(?形参和实参)
程序运行后 系统才划分的区域
栈区:存放局部变量,形式参数
栈区数据由编译器自动开辟和释放
(局部变量在函数内运行结束后就被释放,不能返回正确值(某些编译器保留一次))
堆区:程序运行期间,程序员分配释放;程序结束由操作系统回收
new关键字,将数据开辟到堆区 new关键字开辟的是一个指针,如下:
int *p = new int(10)此例中指针仍然是变量,存在栈区;指向的数据,存在堆区
delete关键字,释放堆中的数据。(释放数组 delete[] arr delete p)
3.引用:给变量起别名
语法 :数据类型 &别名 = 原名
引用必须初始化,不可以更改。

如果函数的返回值是引用,那么这个函数调用可以作为左值
引用相当于一个指针常量:
int &a=b;(a 是b的引用) == int * const a= &b; 指针常量指向不能改=引用不能改该例子中,输入a,b地址入函数,函数交换地址指向的内存的数据该例子中,&a,&b都是a,b的别名,交换的是实参中的数据
常量引用:
修饰形参,防止误操作。
const int & ref = 10; 其中编译器通过tem中间值给引用赋值,该引用不可修改。
4.函数提高
4.1函数默认参数:
默认参数优先级低于自传数据
函数的声明和实现只能有一个默认参数
4.2函数占位参数:
4.3函数重载
同一作用域;参数类型/顺序/数量 不同;避免二义性

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页