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