C 的幾種二維陣列申請與釋放操作

2021-10-08 03:25:28 字數 1547 閱讀 5675

最近需要寫乙個介面,函式每執行一次,需要儲存448路的資料,執行第二次,仍然儲存448路資料,麻煩的是,兩次448路資料需要合為乙個448路,這就要求,給乙個二維陣列,第一次直接儲存,第二次,偏移一定的長度後再儲存;

了解到三種方法可以實現:

1,new delete

int

main()

2,malloc,free

//2,malloc free 4*3的矩陣

int m =

4, n =3;

//申請

int*

*array_new =

(int**

)malloc

(sizeof

(int*)

*4);

for(

int i =

0; i <

4; i++

)display

(array_new,4,

3);//釋放

for(

int i =

0; i <

4; i++

) free (array_new[i]);

free (array_new)

;return

0;

這裡如果想把初始值用memset設為1的話,應該如何做呢?

直接把memset裡的value改為1,列印輸出的結果是16843009;很奇怪,但是轉為二進位制就明白原因了

原來memset是乙個位元組乙個直接的設定初始值

乙個位元組8bit ,所以1對應0000 0001;

乙個int,4個位元組,所以就是:

0000 0001 0000 0001 0000 0001 0000 0001

也就是十進位制的16843009

3,vector

//3,vector

//申請

vector

int>>

arrat_vector(4

, vector<

int>(3

,1))

;//列印

for(

int i =

0; i != arrat_vector.

size()

; i++

) cout << endl;

}//釋放,vector會自動釋放,只要不是用malloc和new定義的vector,都不用手動釋放

二維陣列動態申請與傳參

今天在寫八皇后時遇到了一些小問題,下面整理一下。用二階指標來申請 include include 這裡只做申請 void makedoublearray int row,int col for i 0 i row i free array void main void 用二維陣列指標申請 inclu...

二維陣列如何申請和釋放

1,二維陣列的申請 typedef struct dictht dictht typedef struct dictentry v struct dictentry next dictentry 假如有這樣的乙個二維陣列,dictentry table,如何來申請呢?首先要明白dictentry t...

動態申請二維陣列並釋放方法

c c 中動態開闢一維 二維陣列是非常常用的,以前沒記住,做題時怎麼也想不起來,現在好好整理一下。c 中有三種方法來動態申請多維陣列 1 c中的malloc free 2 c 中的new delete 3 stl容器中的vector 下面逐一介紹 1.動態開闢一維陣列 cpp view plain ...