如何给一个二维数组动态分配内存
生活随笔
收集整理的这篇文章主要介绍了
如何给一个二维数组动态分配内存
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
今天最算法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