如何给一个二维数组动态分配内存
生活随笔
收集整理的這篇文章主要介紹了
如何给一个二维数组动态分配内存
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天最算法project時遇到需要使用一個動態數組,并且這個數組在編譯時還是不知道大小的,到底能不能給二維數組動態分配空間,我還真沒試過。是不是跟一維數組一樣?用int *ar = new int[n][m],試了一下不行。 后來試了很多方法參考了網上的資料終于理解了,其實方法還是跟一維數組一樣,至少說二維數組可以看成是地址的地址。具體方法如下: void test_two_array()
{
int r ,c ;//r 表示行,c表示列
cin >> r>> c;
cout<<endl ; //數組的第一維動態分配空間,相當于動態分配一個類型為Int* 的數組的空間相當于ar[],想給每一行分配the?? array?? with?? row?? r,column?? c
//相當于創建一個指針數組int*[],每一個數組元素是一個指針,代表一行,共r行
int * *ar = new int*[r] ; for (int i = 0 ;i< r ; i++)
{
?? *(ar+i) = new int[c]; //相當于給每一行動態分配c個數組元素空間,每個其實就是一列(相當于對每個數組的第二維動態分配空間 ar[][] 給各個列分配),
?? //i=0是表示給第一行分配c個整型元素空間
} //test for (int i = 0 ; i < r ; i++)
{
?? for (int j = 0 ; j<c ; j++)
?? {
??? ar[i][j] = 10*(i+1)+(j+1) ;
??? cout << ar[i][j] << "\t" ;
?? }
?? cout << endl ;
}
{
int r ,c ;//r 表示行,c表示列
cin >> r>> c;
cout<<endl ; //數組的第一維動態分配空間,相當于動態分配一個類型為Int* 的數組的空間相當于ar[],想給每一行分配the?? array?? with?? row?? r,column?? c
//相當于創建一個指針數組int*[],每一個數組元素是一個指針,代表一行,共r行
int * *ar = new int*[r] ; for (int i = 0 ;i< r ; i++)
{
?? *(ar+i) = new int[c]; //相當于給每一行動態分配c個數組元素空間,每個其實就是一列(相當于對每個數組的第二維動態分配空間 ar[][] 給各個列分配),
?? //i=0是表示給第一行分配c個整型元素空間
} //test for (int i = 0 ; i < r ; i++)
{
?? for (int j = 0 ; j<c ; j++)
?? {
??? ar[i][j] = 10*(i+1)+(j+1) ;
??? cout << ar[i][j] << "\t" ;
?? }
?? cout << endl ;
}
轉載于:https://blog.51cto.com/pingpeace/284555
總結
以上是生活随笔為你收集整理的如何给一个二维数组动态分配内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过UDP的组播方式收发数据
- 下一篇: [IE]微软发布IE9预览版- 建议We