c 如何定義不知道大小的陣列

2021-08-09 02:32:51 字數 1402 閱讀 4641

在c++中實現變長陣列  

1.變長一維陣列  

這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要

動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做:

//檔名:   array01.cpp  

#include

using   namespace   std;  

int   main()  

注意int   *p=new   int[len];這一句,你不能這樣做:  

int   p[len];  

c++編譯器會報錯說len的大小不能確定,因為用這種形式宣告陣列,陣列的大小需要在編譯時確定。而且這樣也不行:  

int   p=new   int[len];  

編譯器會說不能把int*型轉化為int型,因為用new開闢了一段記憶體空間後會返回這段記憶體的首位址,所以要把這個位址賦給乙個指標,所以要用int   *p=new   int[len];  

array01.cpp實現了乙個變長的一維陣列,但是要養成乙個好習慣,就是注意要登出指標p,使程式釋放用new開闢的記憶體空間。  

當然使用c++標準模版庫(stl)中的vector(向量)也可以實現變長陣列:  

//檔名:   array02.cpp  

#include

#include

using   namespace   std;  

int   main()  

cout<}  

return   0;  

}  

執行結果:  

input   value   for   m,n,l:2   3   4  

0:   00492fe0         1:   00492fe4         2:   00492fe8         3:   00492fec  

1:   00492fa0         2:   00492fa4         3:   00492fa8         4:   00492fac  

2:   00492f60         3:   00492f64         4:   00492f68         5:   00492f6c  

1:   00492ec0         2:   00492ec4         3:   00492ec8         4:   00492ecc  

2:   00492e80         3:   00492e84         4:   00492e88         5:   00492e8c  

3:   00492e40         4:   00492e44         5:   00492e48         6:   00492e4c

不知道如何提筆。

奔三的人了,雖然心態還不算老,但事實是殘酷的。今天的路何去何從。我真的看不太清。自己看好的方向卻很難找到機會。迫於生活的壓力只能將就了乙個比較接近的。但我就一普通人,看不清未來。現在就是堅定信念,在現在的領域努力。我相信,只要付出比別人多的努力,那麼機會就會光顧我的。堅信。總結下這個禮拜的學習內容。...

我不知道的C 概念

接觸c 已有兩三個年頭,但好像一直都在其邊緣逗留,今天準備學習一下boost庫,看到學習庫的首要條件便是要知道 raii,函式物件和謂詞。但這幾個概念,我都覺得很新鮮!raii 資源獲取就是初始化,為了便於記憶,暫時把它理解為,把資源做為類的成員,在類的建構函式中做初始化,在析構函式中釋放資源,這樣...

C 我不知道的事

1.命名空間是起什麼作用的?和程式集之間的關係 乙個程式集可以有多個命名空間。2.靜態類是幹什麼的?靜態類也只是把邏輯相關的一些靜態函式組織在一起,除此之外沒有其他功能。功能限制就是只能包含靜態成員。3.抽象函式和介面到底選哪個?相同點 都不能直接例項化。都是抽象的概念,設計模式的精髓就是面向抽象程...