`
prothi
  • 浏览: 60119 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++动态创建二维数组

    博客分类:
  • c++
阅读更多
c++动态创建二维数组

方法1:用一维数组代替二维数组
int n,m;
cin>>n>>m;
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:二维数组
  int n,m;
  cin>>n>>m;
  int** a = new int*[n];\\\\\创建指针数组
  for(int i = 0;i<n;i++)
  {
     a[i] = new int[m];\\\\\\\\为每一行分配空间
  }
 
  for(int f =0;f<n;f++)
  {
     for(int j =0;j<m;j++)
  {
     a[f][j] = f+j;\\\\\\\\\\\\为数组赋值
  }
  }


其实大家更关心二维数组在内存中是如何分配空间的:
输出每个元素的地址:
for(int k = 0;k<n;++k)
  {
     cout<<endl;
     for(int s = 0;s<m;++s)
  {
     
   cout<<&a[k][s]<<"  ";
  }
  }

输出结果:
00491B40  00491B44  00491B48
004918D0  004918D4  004918D8
00491890  00491894  00491898

每一行的相邻元素地址是递增的,连续的,不同行之间的地址就不连续了。
分享到:
评论

相关推荐

    C++一维数组二维数组写入txt,从txt中读取数据存到一维数组二维数组

    声明二维数组时,需要提供行数和列数,如 `int matrix[3][4]` 创建了一个3行4列的二维数组。 3. **指针**:在C++中,指针是存储内存地址的变量。可以使用指针来动态管理数组,特别是当数组大小在运行时确定时。例如...

    c#调用c++DLL,dll有二维数组

    在C++中,创建一个二维数组函数可能如下所示: ```cpp extern "C" __declspec(dllexport) void get2DArray(int*** arr, int& rows, int& cols) { // 初始化二维数组并设置rows和cols *arr = new int*[rows]; ...

    C++动态二维数组的申请、赋值、使用、释放以及作参数示例

    ### C++动态二维数组的申请、赋值、使用、释放及作参数详解 #### 一、引言 在C++编程中,动态二维数组是非常重要的数据结构之一,它能够根据程序运行时的需求灵活地分配内存空间。本文将详细介绍如何在C++中创建、...

    C++利用函数动态创建二维数组

    C++利用函数动态创建二维数组 在C++编程语言中,动态创建二维数组是一种非常重要的技术,特别是在需要处理大量数据或不确定数组大小的情况下。本文将主要介绍如何使用函数动态创建二维数组,包括相关的代码示例和...

    C++动态创建二维数组.zip_源码/资料_C++_

    本资源“C++动态创建二维数组.zip”提供了一个VS2015环境下的示例,帮助开发者理解如何在运行时分配和管理内存来创建二维数组,以及如何找出这个数组中的最大值。下面我们将详细探讨这些知识点。 首先,让我们了解...

    关于C++动态为二维数组分配空间的问题

    ### 关于C++动态为二维数组分配空间的问题 在C++编程中,动态分配内存是一项非常重要的技能,尤其是在处理不确定大小的数据结构时。本文将详细解释如何使用`new`操作符来动态分配二维数组的空间,并通过示例代码...

    动态二维数组的应用

    这两种方法都可以创建二维数组,但实现方式和内存管理有所不同。 1. **一重指针实现**: 使用一重指针实现动态二维数组时,首先分配一个指向指针的指针(即二维数组的行指针),然后为每一行分配单独的一维数组。...

    C语言动态分配二维数组

    - 该函数实现了动态创建一个指定大小的二维数组的过程。首先为行指针数组分配内存,然后为整个二维数组分配内存,并初始化所有元素为0,最后设置每一行的起始地址。 通过以上内容,我们可以看到在C语言中动态分配...

    C++两个一维数组相加求和

    本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维整型数组`arr1`和`arr2`,分别初始化为`{1, 2, 3, 4, 5}`和`{6, 7, 8, 9, 10}`。...

    C++二维数组编程实例.zip

    当数组大小在编译时未知时,可以使用动态内存分配创建二维数组。 ```cpp int rows, cols; cin &gt;&gt; rows &gt;&gt; cols; int **arr = new int*[rows]; for(int i = 0; i ; i++) { arr[i] = new int[cols]; } // ...

    动态开辟二维数组.doc )

    在编程领域,特别是在C++中,动态开辟二维数组是一项基本而重要的技能。本文将基于提供的文件信息,深入探讨如何使用C++中的`new`关键字以及`vector`容器来实现这一功能。 #### 一、使用`new`关键字开辟二维数组 ...

    动态生成二维数组,vs2005例程

    在C++编程中,动态生成二维数组是一种常见的内存管理技巧,尤其在处理不确定大小的数据集时。本例程“动态生成二维数组,vs2005例程”着重讲解如何在Visual Studio 2005环境下创建和管理这类数据结构。下面我们将...

    调用形参为二维数组的函数

    接下来,我们需要了解如何将这个动态创建的二维数组作为参数传递给一个接受二维数组作为形参的函数。在C/C++中,数组名在函数调用中通常被视为指向数组首元素的指针。因此,传递二维数组的行首地址可以模拟传递整个...

    Vector创建二维数组

    vector创建二维数组。在编程中,Vector 通常指的是一个可以动态增长和缩小的数组。然而,在许多编程语言的标准库中,Vector 主要是...下面我将介绍如何使用一维 Vector(以 C++ 的 std::vector 为例)来创建二维数组。

    数据结构与算法 一维数组-二维数组-三维数组

    在C++中,我们可以这样定义二维数组: ```cpp int twoDimArray[3][4]; // 定义一个3行4列的二维数组 ``` 这里的`twoDimArray[i][j]`表示第`i+1`行第`j+1`列的元素。二维数组常用于处理表格或矩阵数据。 三维数组...

    vector创建二维数组

    在C++中,可以使用vector来创建二维数组。vector是C++标准库中的一个动态数组容器,可以自动管理内存的分配和释放。使用vector创建二维数组时,需要先创建一个外层的vector,然后为每个元素再创建一个内层的vector。...

    C++实现三维动态数组,赋值加减乘算法

    `allocate3D`函数接受三个参数,分别代表x、y、z轴的尺寸,返回指向二维数组(即一维数组的数组)的指针。每个二维数组内部是一维数组,长度为ny*nz。`deallocate3D`函数用于释放分配的内存,防止内存泄漏。 接下来...

    c++动态数组申请(包括一维,二维的)

    2. 二维指针实现二维数组:这种方法创建的是真正意义上的二维数组,每个元素也是指针,指向各自的一维数组: ```cpp int **arr = new int*[m]; for (int i = 0; i ; ++i) { arr[i] = new int[n]; } ``` 同样,用...

Global site tag (gtag.js) - Google Analytics