C 中的指標和動態分配二維陣列問題

2021-07-10 10:43:58 字數 1292 閱讀 5129

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.讓陣列的內容連續,但在後來重新分配列的時候會比較困...