c++动态创建二维数组的方法

来源:互联网 发布:做网站是否用数据库 编辑:程序博客网 时间:2024/05/20 23:06

c/c++中创建二维数组的方法

方法1:用一维数组代替二维数组

#include <iostream>

#include <memory.h>

#include <stdio.h>

using namespace std;

 

int main(void)

{

     ////////////////////////////

    int n=2,m=3;

     int *a=new int[n*m];

     for(int i=0;i<n;i++)

     {

         cout<<endl;

         for(int j=0;j<m;j++)

         {

              a[i*m+j]=i+j;

              cout<<a[i*m+j]<<"   "<<&a[i*m+j]<<"  ";

         }

     }

     cout<<endl;

     delete []a;

    

}

  运行结果:

  0  00491BB0    1  00491BB4     2  00491BB8

  1  00491BBC    2  00491BC0     3  00491BC4

  2  00491BC8    3  00491BCC     4  00491BD0

  各个元素的内存地址是递增的,是在堆区里分配的内存空间。

 

 

 

 方法2:二维数组

#include <iostream>

#include <memory.h>

#include <stdio.h>

using namespace std;

 

int main(void)

{

    ////////////////////////////

    int n=2,m=3;

    int **a=new int*[n];

       for(int i=0;i<n;i++)

       {

                a[i]=new int[m];

        }

               

    for(int i=0;i<n;i++)

    {

       cout<<endl;

       for(int j=0;j<m;j++)

       {

           a[i][j]=i+j;

           cout<<a[i][j]<<"   "<<&a[i][j]<<"  ";

       }

    }

    cout<<endl;

    delete []a;

    getchar();

}

  其实大家更关心二维数组在内存中是如何分配空间的:

  输出结果:

  00491B40  00491B44  00491B48

  004918D0  004918D4  004918D8

  00491890  00491894  00491898

  每一行的相邻元素地址是递增的,连续的,不同行之间的地址就不连续了。