二維陣列動態分配總結

2021-07-23 18:05:41 字數 873 閱讀 8207

今天老師布置了一道矩陣轉置,果然啊,耍了乙個暑假都忘得差不多了,還是古語說得好:「好記性不如爛筆頭」;廢話不多說了,小白要開始總結了。

方法一:陣列空間不連續,兩次呼叫malloc

int ** array_1(int row, int col)

方法二:陣列空間連續,且只呼叫malloc一次,相對方法一效率要高

int ** array_2(int row, int col)

ps:一開始程式裡有pp=&p的時候,程式一直報錯。後來在論壇請教後才知道,此時的pp已經不再指向原本分配的空間了。。。。。。

注意:

if (p == null || pp == null)//應該分開判斷,當p分配成功而pp分配失敗時,應該free(p),避免記憶體洩漏

方法三(分配連續記憶體,列確定):

#include#includeint main()

{ const int maxcol=3;

int nrow;

printf("請輸入二維陣列的行數(列固定為%d):",maxcol);

scanf("%d",&nrow);

int *p=new int[nrow*maxcol];//連續記憶體

int (*pp)[maxcol]=(int(*)[maxcol])p;//將p轉換為二維陣列,int(*pp)[maxcol]為p分配空間

int i,j;

for(i=0;i

動態分配二維陣列

1.c語言動態分配二維陣列 1 已知第二維 code 1 char a n 指向陣列的指標 a char n malloc sizeof char m printf d n sizeof a 4,指標 printf d n sizeof a 0 n,一維陣列 free a 2 已知第一維 code ...

動態分配二維陣列

原文摘自 假設我需要乙個nrows ncolumns陣列,則可以用以下幾種方法動態分配空間 1.動態陣列的成員都可以用正常的陣列下標 array i j include include void main printf n free array 2.讓陣列的內容連續,但在後來重新分配列的時候會比較困...

動態分配二維陣列

眾所周知,每乙個二維陣列有n行個二級指標指向陣列的每一行,每一行有m個一級指標指向陣列的每乙個元素。因此,我們動態分配二維陣列只要分配n個二級指標,n m個一級指標就行了,先來看乙個常用的方法 int i,p int malloc row sizeof int for i 0 i但這個方法每次分配指...