Wednesday, November 09, 2011

動態宣告三維陣列

之前曾經介紹過如何 動態宣告二維陣列, 可是彩色影像是由 RGB 三個色彩所組成, 如果想用一個三維陣列來儲存一張彩色影像的 RGB 色彩值, 那又要該如何修改程式呢?

// 標頭檔
#include <iostream.h>

// 宣告
int ***iComponent;

// 程式

 try
  {
  iComponent = new int **[3];
  for (i=0;i<3;i++)
   {
   iComponent[i] = new int *[20];
   for (j=0;j<20;j++)
    iComponent[i][j] = new int [40];
   }
  }
 catch (std::bad_alloc)
  {
  ShowMessage("Could not allocate memory...Bye");
  exit(-1);
  }

// 使用測試  
 iComponent[2][19][39]= 10;
 ShowMessage(AnsiString(iComponent[2][19][39]));

  注意: 上述程式為了程式的可讀性, 用了全型的空白" "來控制部落格文章的內縮顯示。因此, 如果你要直接複製上述程式到 C++ Builder 執行, 請務必將全型空白" "改成半型空白" ", 否則, 編譯時發出現以下的錯誤訊息。:
[C++ Error] Unit1.cpp(40): E2206 Illegal character ' ' (0xa140)