1. new int[n] 和 new int(n)的區別?
int *p_data = new int(n) // 表示 指標p_data指向乙個int型的資料(物件),這個資料初始化為n
int *p_data = new int[n] // 表示 分配乙個長度為n的int型的陣列,p_data指向這個陣列
int *p_data = (int *)malloc(sizeof(int ) * n) // 等價於第二條語句
2. 動態分配二維陣列方法——之一
首先,動態分配記憶體來定義乙個指標陣列(二級指標),然後為這個陣列的每乙個成員(指標)動態分配記憶體,讓每乙個成員指向乙個一位陣列,這樣就等價於定義了乙個二維陣列。
測試**如下:
#include#includeusing namespace std;
int main()
for(int i = 0; i < row; i++) }
for(int i = 0; i < row; i++)
printf("\n");
} for(int i = 0; i < row; i++)
delete p_data; // 最後釋放這個指標陣列
p_data = null;
return 0;
}
測試結果如下:
3. 動態分配二維陣列方法——之二
這個方法的侷限在於:陣列的列要設定為const型別或者巨集定義為常量
原理:首先動態分配乙個一維陣列,大小為目的二維陣列的總大小,然後將這個一維陣列強制轉換成二維陣列指標,這樣就等於建立了乙個二維陣列。
測試**如下:
#include int main()
} for(int i = 0; i < row; i++)
printf("\n");
} delete p_data;
return 0;
}
測試結果如下:
4. 指標陣列與陣列指標的區別
陣列指標:如 int(*p)[n]表示 p 是乙個指標,指向了乙個二維陣列。
指標陣列:如int *p[n] 表示 p 是乙個陣列,裡面存放的是n個指標變數。
C 中動態分配二維陣列
在釋放指標之後一定要記得將其置為null,否則在之後的程式中容易引起無法預知的錯誤。include define n 4typedef intp n 方法一用到 using namespace std intmain delete ptr1 cout endl 方法二 使用陣列指標 introw n...
動態分配二維陣列
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.讓陣列的內容連續,但在後來重新分配列的時候會比較困...