c++重点笔记2
注释:ctrl+k+c
清屏:system(“cls”);
请按任意键继续:system(“pause”);
空指针:指针变量指向内存中编号为0的空间 int * p=NULL;
可用来初始化指针变量
其指向的内容空间是不可访问的
野指针:指向菲法的内存空间
0-255之间的的内存编号是系统占用的不可访问
const修饰指针:
常量指针:const int *p;可以修改指针的指向,不可修改指针指向的值
指针常量:int * const p ;不可以修改指针的指向,可修改指针指向的值
const int * const p;两者都不可修改
结构体:属于用户自定义的数据类型,允许用户存储不同的数据类型
语法 struct 结构体名{成员列表};
定义时struct关键字不可省略,创建时可以省略
结构体指针访问结构体属性,用->
内存分区模型:代码区:存放CPU执行的机器指令,是共享的、只读的。
全局区;存放全局变量、静态变量、常量(字符串常量。const修饰的全局变量),程序结束后由操作系统释放。
栈区:由编译器自动分配和释放,存放函数参数值和局部变量(不要返回局部变量的地址),数据在函数执行执行完后自动释放
堆区:由程序员手动分配和释放,若不释放,程序结束后由操作系统回收,主要利用new在堆区开辟内存
程序运行前有代码区和全局区
new开辟内存,返回的是地址,所以用指针接收,用delete释放
int * p= new int (10); delete p;
用new开辟数组空间,返回数组首地址。 delete[ ] 数组名;
引用:给变量起别名 引用符号&,引用必须初始化,初始化后不可改变,相当于指针常量
引用做函数返回值,不要返回局部变量的引用(因为局部变量存放于栈区中,数据在函数执行完后自动释放);可以作为左值。
常量引用:int a =10; int &b=10; 错误
const int &b =10;正确 (因为编译器自动将代码修改为 int temp=10; const int & b=temp;);此时b =20错误(因为加入const之后变为只读,不可修改)
作用:用来修饰形参,防止误操作
如果函数声明有默认参数,函数实现就不能有默认参数 函数重载:参数的数据类型不同,参数个数不同,参数顺序不同 (返回值不同不可以)