一、c++動態申請二維陣列
在c++中不能直接動態申請二維陣列,經過一番搜尋,發現一種動態申請二維陣列較好的方法。
**如下(matrix_type為某一種型別,lines、columns分別為二維陣列的行數、列數):
matrix_type**elem;//分配記憶體
void
matrix::memalloc()
//釋放記憶體
void
matrix::memfree()
這樣可以直接讀取和賦值:
elem[i][j] = 0;
這種方法申請二維陣列的優點是記憶體連續,使用直接。
二、c++拷貝建構函式、等號過載
當使用乙個物件通過另乙個物件進行初始化、賦值或函式呼叫返回值時,c++會將原物件進行拷貝,再賦值給下乙個物件。但是這會出現乙個問題,就是當物件中包含動態成員時,c++無法將動態成員資料進行拷貝,即c++進行的拷貝僅僅是「淺拷貝」。
當物件進行初始化時,c++會呼叫拷貝建構函式,當已初始化的物件進行賦值時,c++會呼叫等號過載。
所以解決這一問題的乙個辦法是,重寫拷貝建構函式並進行等號過載。形式如下:
classmatrix;//
初始化matrix::matrix()
matrix::matrix(
int lines, int
columns)
matrix::~matrix()
//分配記憶體
void
matrix::memalloc()
void
matrix::memfree()
//拷貝建構函式
matrix::matrix(const matrix&m)
//符號過載
matrix& matrix::operator =(const matrix&m)
matrix_type* matrix::operator (int
i)const matrix_type* matrix::operator (int i) const
matrix m1 = matrix(2, 2);matrix m2 = m1; //
會呼叫拷貝建構函式
matrix m3 = matrix(2, 2
);m3 = m1; //
會呼叫等號過載
C 動態申請二維陣列
剛學習,做下總結。以下是我的理解,如有錯誤歡迎指出。申請 int a 乙個指向指標的指標。int n m cin n m a new int n 申請乙個n個元素的一維陣列 作為行 for int i 0 i 關係如下假設 n 3 m 4 先申請乙個一維陣列,陣列的每個元素都是乙個指標變數 該陣列的...
C 中動態申請二維陣列
這裡主要介紹c 中動態申請二維陣列的兩種方式,直接給出 很容易明白,簡單的作為乙個筆記。include include 輸入輸出操縱 include using namespace std 法一 new 方式申請 void dynamicarray for i 0 i rows i cout end...
C 二維陣列動態申請記憶體
好久沒用c 刷題了,今天早上刷了幾條題,感覺很陌生了。怪我,大二下實在太頹廢了,沒啥作為。今天更新個關於c 二維陣列記憶體申請的問題,當初作為菜鳥初學指標的時候,還是在這方面有點搞不通的。今天用到了,順便寫下來,適當時候給c 初學者用用。c 二維陣列動態申請記憶體 如果對new和delete不是很了...