关于c++动态数组的一些粗浅见解

   指针基础

  指针(pointer)这个概念有一点点抽象,大家很有可能在使用过程中被“ * ”这个解除引用操作符和“ & ”地址符的穿插使用搞混。记录一下自己的学习内容,方便理解。

  首先引入一个代码块

int value = 1024;
int *p;
p = &value;

  这样应该非常直观了,声明一个变量value并将其初始化为1024,声明一个int型指针p,将value对应的地址值赋给p。

  在这个代码块中,*p = value; p = &value;

  直接声明:

  int valueB = 1024;  

  int *pb = &valueB;

  Tips: int *pc == int* pc == int * pc; 间接引用:int number = *pc;

  使用new分配内存

  在运行阶段给未命名的内存分配储存值

  typeName pointer_name = new typeName;

int pt = new int;
*pt = 1001;

  内存使用完毕后需要使用delete来释放内存。(必须为创建时内存的状态,即增减后需要恢复为创建时的指针状态)

  delete pt;

  一定要配对使用new 与 delete,否则会发生内存泄漏(memory leak)。

  使用new创建动态数组   

  int * ps = new int [20]; //通用格式: typeName pointer_name = new typeName [num_elements];

  程序结束内存使用完毕后,同样需要delete来释放内存防止泄露。

  delete [] ps; // 释放整个数组

  使用动态数组

  创建动态数组完毕就是使用它了,很简单,如下:

  double *p3 = new double [3];

  double[0] = 0.3;

  double[1] = 0.6;

  double[2] = 0.9;

  在这里可以直接通过加减操作移动指针的位置。

  p3 = p3 + 1;

  这时指针会指向下一个元素的地址。

  

猜你喜欢

转载自blog.csdn.net/qq_38977538/article/details/83893565