您的位置:首页 > 编程语言 > C语言/C++

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

2010-09-16 18:17 281 查看
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*
;

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

  每一行的相邻元素地址是递增的,连续的,不同行之间的地址就不连续了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: