C++ 引用和动态内存分配

引用

1.类型名后加**&**,如

int &a = b;
  • 引用必须初始化成引用某个变量,之后不会改变
  • 某个变量的引用,等价于该变量,相当于一个别名
  • 引用可以作为函数的返回值,从而修改函数的返回值,如
int &SetValue() {return n;}
SetValue() = 40;

2.常引用const T &

  • 不能通过常引用修改其引用内容
  • 与非常引用 T & 是不同的类型,但可以通过强制类型转换来实现非常引用给常引用赋值(反过来不行)

const关键字的用法

1.定义常量

const int MAX_VAL = 23;

类似define,但可以规定变量类型,更好

2.定义常量指针

不能通过常量指针修改其指向的内容(但可以通过其他方式修改,也可以指向其他变量)

作用:函数参数为常量指针时,可避免函数内部修改其指向的内容。

3.定义常引用

即上述引用部分第2点

动态内存分配

1.new运算符

(1)分配一个变量

int *p = new int;

(2)分配一个数组

int *p = new int[10];

注意:new运算符返回值类型为 T *

2.delete运算符

与new搭配使用,用new动态分配的空间,一定要用delete进行释放

注意:

  • 一片空间只能被delete一次
  • 释放数组要加"[ ]",否则可能释放不完全,导致空间利用不足,例如:
int *p = new int[20];
delete []p;

https://www.bilibili.com/video/BV1Ns411n7ui?p=4&spm_id_from=pageDriver 程序设计与算法(三)C++面向对象程序设计