1. 程式人生 > >關於c++動態陣列的一些粗淺見解

關於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;

  這時指標會指向下一個元素的地址。