vs2010中輸入:
#include using namespace std;
//根據變數動態建立一維陣列
int main()
{ int n=5;
int *p=new int[n];
/*初始化方法一*/
//memset(p,0,sizeof(int)*n);
/*初始化方法二*/
for(int i=0;i輸出5個0
但是如果想用p[6]怎麼辦?
c語言可以用realloc,c++可以用vector,或者自己重新new乙個所需大小的陣列,然後把之前的複製過來。
這個部落格寫的挺好:
#include using namespace std;
//根據變數動態建立一維陣列
int main()
{ int n=10;
int **p=new int* [n];
for(int i=0;i**比較多,知識點也比較多
首先是二維陣列的指標型別:
p代表的是指向p[n]
要注意 p 和 &p 的型別是不同的。p 相當於 &p[0],
而 &p 是乙個指向 int[n] 的指標,型別是 int(*)[n]
也可以看看部落格:
然後是初始化:
不能直接用:
memset(p,0,sizeof(int)*n*n);
因為位址不對,比如我將每個元素&p的位址輸出出來
&p[0][0]:
033638d8 033638dc 033638e0 033638e4 033638e8
03363708 0336370c 03363710 03363714 03363718
03363748 0336374c 03363750 03363754 03363758
03363788 0336378c 03363790 03363794 03363798
033637c8 033637cc 033637d0 033637d4 033637d8
&p[4][4]:
明顯可以看出p[0][0]和p[1][0]位址差距為5*16=80個位元組,但是咱們陣列應該是5*4=20個位元組
本來以為是指標的原因。把指標位址輸出出來
&p[i]: 032d48d8
&p[i][j]: 032d4928 &p[i][j]: 032d492c &p[i][j]: 032d4930 &p[i][j]: 032d4934 &p[i][j]: 032d4938
&p[i]: 032d48dc
&p[i][j]: 032d4978 &p[i][j]: 032d497c &p[i][j]: 032d4980 &p[i][j]: 032d4984 &p[i][j]: 032d4988
&p[i]: 032d48e0
&p[i][j]: 032d49c8 &p[i][j]: 032d49cc &p[i][j]: 032d49d0 &p[i][j]: 032d49d4 &p[i][j]: 032d49d8
&p[i]: 032d48e4
&p[i][j]: 032d4a18 &p[i][j]: 032d4a1c &p[i][j]: 032d4a20 &p[i][j]: 032d4a24 &p[i][j]: 032d4a28
&p[i]: 032d48e8
&p[i][j]: 032d4a68 &p[i][j]: 032d4a6c &p[i][j]: 032d4a70 &p[i][j]: 032d4a74 &p[i][j]: 032d4a78
發現指標的位址都小於資料位址,可以說先給指標位址,再給資料位址(堆從低位址向高位址擴充套件)
好了,到現在我已經不動了。
我把n調成10,發現本來應該是4個位元組的差距,結果是104.
這個肯定是浪費了太多的空間,所以說以後刷筆試題目,還不如直接用1000的固定陣列來做。。。
說多了,回過來再說初始化:
兩種方式,必須用for迴圈。。。
更推薦:
for(int i=0;i在說下
釋放空間
:for(int i=0; i程式設計師的知識點相當多,每次想寫乙個知識點,發現擴充套件下去無窮無盡,可能這就是程式設計的魅力吧。
打好基礎,好好學習
C 動態建立二維陣列
方法1 用一維陣列代替二維陣列 int n,m cin n m int a new int n m for int i 0 icoutcout執行結果 0 00491bb0 1 00491bb4 2 00491bb8 1 00491bbc 2 00491bc0 3 00491bc4 2 00491b...
c 動態建立二維陣列
為了做乙個東西需要用到動態建立二維陣列,特此記錄.include include time.h using namespace std int main srand unsigned time null int x num int y num cout please input x num cin ...
動態建立二維陣列
c 中用new動態建立二維陣列的格式一般是這樣 type p n new type n 其中,type是某種型別,n是二維陣列的列數。採用這種格式,列數必須指出,而行數無需指定。在這裡,p的型別是type n 即是指向乙個有n列元素陣列的指標。還有一種方法,可以不指定陣列的列數 int p p ne...