C++ - 多维数组

C++ 学习笔记

C++ 多维数组

简介

  • 多维度数组就是 array of array
  • 内存中存放了一个连续的指针数组,每一个数组变量都是一个指针,指向另外一个数组

多维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>

int main()
{
// 堆栈变量
int* array = new int[50];
int** a2d = new int*[50];
int*** a3d = new int**[50];

array[0] = 0; // 这儿是int
a2d[0] = nullptr; // 这儿是指针, int 的指针

// 给二维数组申请空间
for (int i = 0; i < 50; ++i)
a2d[i] = new int[50];

// 给三维数组申请空间
for (int i = 0; i < 50; ++i)
{
a3d[i] = new int*[50];
for (int j = 0; j < 50; ++j)
a3d[i][j] = new int[50];
}


std::cin.get();
return 0;
}

空间释放

  • 上面的例子中,所有的内存都是在 heap 上的,需要手动删除
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 删除二维数组
    for (int i = 0; i < 50; ++i)
    delete[] a2d[i];
    delete[] a2d;

    // 删除三维数组申请空间
    for (int i = 0; i < 50; ++i)
    {
    for (int j = 0; j < 50; ++j)
    delete[] a3d[i][j];
    delete[] a3d[i];
    }
    delete[] a3d;