項目1:
目的:熟悉c++動態內存分配
描述:使用c++程序定義動態數組類,使用new和delete操作符實現動態二維數組和三維數組的定義
//main.cpp //主程序類 #include <iostream> #include "DynamicArray.h" #include "DynamicArray3d.h" using namespace std; int main() { cout << "Hello world!" << endl; DynamicArray a; a.printArray(); DynamicArray3d b; b.printArray(); return 0; } //DynamicArray.h //二維數組頭文件 #ifndef DYNAMICARRAY_H #define DYNAMICARRAY_H #include <iostream> using namespace std; class DynamicArray { public: DynamicArray(int m=5,int n=5); ~DynamicArray(); void printArray(); private: int **m_pArray; //用於存儲內部數組 int m_iSize; int n_iSize; //用於記錄占用的內存數 }; #endif // DYNAMICARRAY_H //DynamicArray.cpp //二位數組源文件 #include "DynamicArray.h" DynamicArray::DynamicArray(int m,int n) { int i,j; m_iSize=m; n_iSize=n; m_pArray = new int* [m_iSize]; for (i = 0; i < m_iSize; i++) m_pArray [i] = new int[n_iSize]; for (i = 0; i < m_iSize; i++) for (j = 0; j < n_iSize; j++) { m_pArray[i][j]=i+10*j; } } //析構函數 DynamicArray::~DynamicArray() { for (int i = m_iSize; i > 0;) delete[] m_pArray[--i]; delete[] m_pArray; } void DynamicArray::printArray() { int i,j; cout << "Print Array:" << endl; for (i = 0; i < m_iSize; i++) { for(j = 0; j < n_iSize; j++) cout<<m_pArray [i][j]<<" "; cout<<endl; } } //DynamicArray3d.h //三維數組頭文件 #ifndef DYNAMICARRAY3D_H #define DYNAMICARRAY3D_H #include <iostream> using namespace std; class DynamicArray3d { public: DynamicArray3d(int m=5,int n=5,int o=5); ~DynamicArray3d(); void printArray(); private: int ***m_pArray; //用於存儲內部數組 int m_iSize; int n_iSize; //用於記錄占用的內存數 int o_iSize; }; #endif // DYNAMICARRAY3D_H //三維數組源文件 #include "/home/empty/c/Array/include/DynamicArray3d.h" DynamicArray3d::DynamicArray3d(int m,int n,int o) { int i,j,k ; m_iSize=m; n_iSize=n; o_iSize=o; m_pArray= new int**[m_iSize] ; for( i = 0 ; i < m_iSize ; i ++ ) m_pArray[i] = new int*[n_iSize] ; for( i = 0 ; i < m_iSize ; i ++ ) for( j = 0 ; j < n_iSize ; j ++ ) m_pArray[i][j] = new int[o_iSize ] ; //輸入三維數組值: for(i = 0 ; i <m_iSize ; i ++ ) for(j = 0 ; j < n_iSize ; j ++ ) for( k = 0 ; k < o_iSize ; k ++) m_pArray[i][j][k] = i*100+j*10+k; } DynamicArray3d::~DynamicArray3d() { //dtor } void DynamicArray3d::printArray() { int i,j,k ; for(i = 0 ; i <m_iSize ; i ++ ) { for(j = 0 ; j < n_iSize ; j ++ ) { for( k = 0 ; k < o_iSize ; k ++) cout<<m_pArray[i][j][k]<<" "; cout<<" "; } cout<<endl; } }