【C++】指向动态分配的指针数组的指针

首先介绍指向数组的指针

  char *p = new char; 定义指向动态分配的字符变量的指针;
  char *p = new char[3]; 定义指向动态分配的一维字符数组的指针,p指向数组首个元素的地址,即(p+1)为数组第二个元素的地址;
  char (*p)[3] = new char[2][3]; 定义指向动态分配的二维字符数组(三行)的指针,p指向数组首行的地址,即(p+1)为数组第二行的地址;
  char (*p)[9][8] = new char[7][9][8]; 定义指向动态分配的三维字符数组的指针(7个9列8行的二维数组),p指向首个二维数组的地址,即(p+1)为第二个二维数组的地址;
  同样的,char数据类型可换成其他数据类型,比如Point类类型,例:
  Point *p = new Point[2]; 定义指向动态分配的一维Point类对象数组的指针。

再介绍指针数组
  这里只举例一维指针数组:Point *p[2]; 定义一个Point类对象的数组,数组里的两个元素都是指向Point类对象的指针(p[0], p[1])。

最后,指向动态指针数组的指针

  int *p = new int *[10]; //错误
  int **p = new int *[10]; //正确

  new int *[10]表示动态生成一个包含10个int型指针的数组,要定义指向指针数组的指针p,那么p也就是指向指针数组首元素,而指针数组首元素是一个int型指针,所以p就是指向int型指针的指针,即指向指针的指针。要定义指向指针的指针,就要使用T **p的格式。

————————— 本文结束 感谢您的阅读 —————————
谢谢你请我喝咖啡ლↂ‿‿ↂლ(支付宝扫一扫即可领红包, 消费时可抵现! 你省钱, 我赚钱, 多谢支持~)