C++ new申请二维数组整理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ new申请二维数组整理相关的知识,希望对你有一定的参考价值。

参考技术A a) int a; 表示一个内存空间,这个空间用来存放一个整数(int);

b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放整数的空间,即a)中提到的空间;

c) int** a;表示一个内存空间,这个空间用来存放一个指针,这个指针指向一个存放指针的空间,并且指向的这个空间中的指针,指向一个整数。也简单的说,指向了一个b)中提到的空间;

动态申请二维数组:

//申请空间

    int** a2 = new int*[rows]; //开辟一块内存用来存放 每一行的地址 int*,申请两个int * 型的空间

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

        a2[i] = new int[columns];  //再分别为每一行开辟内存

    //释放空间

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

        delete []a2[i];

    delete []a2;

————————————————

int **swp;      //动态申请二维数组 2行 10列  

swp=new int*[2];  

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

swp[i]=new int[10];  

释放内存:

for(int i=0,i<2,i++)

delete []a[i];

delete []a;

d) int (*a)[10];a是一个指针,这个指针指向一个长度为10、类型为int的数组;

如果有一个二维数组p[2][10], a = p; a++以后 指向p[1][0]

int (*a)[10] = new int[2][10]; 

int a[m][n];

这代表了一个m行n列的二位数组。

或者是

int **p;

用指针定义一个二位数组。

还有

int (*p)[n];

这定义了一个未知行n列的二位数组。

C++二维数组内存分配

在C++中,用new和delete分配和释放内存:

1.例如,给一个4*5的二维数组分配内存

方法一:直接申请二维数组,逐一分配内存

 1 int **array;
 2 //分配内存
 3 array=new int*[4];
 4 
 5 for (int i=0;i<4;i++)
 6     array[i]=new int[5];
 7 
 8 //释放内存
 9 for (int i=0;i<4;i++)
10     delete[] array[i];
11 
12 delete[] array;

 

方法二:按照一维数组进行分配

int *array;

array=new int[4*5];

 

以上是关于C++ new申请二维数组整理的主要内容,如果未能解决你的问题,请参考以下文章

C++二维数组离散动态和连续动态空间申请

C++二维数组内存分配

c++ 动态分配二维数组 new 二维数组

C++之申请释放内存(对象数组和99乘法表)

C++动态申请数组问题

vector申请二维数组