如何new与delete各种二维数组

    xiaoxiao2021-12-14  28

    #include<iostream> using namespace std; const int M = 10; //行数 const int N = 20; //列数 int main() { //第一种,可以直接[][]访问。但是内存不连续,不是很推荐使用,除非M\N都不确定 int** pNum;//以int为例 pNum = new int*[M]; for (int i = 0; i<M; i++) { pNum[i] = new int[N]; } //删除的时候是 for (int j = 0; j<M; j++) { delete[]pNum[j]; } delete[]pNum; //第二种,内存连续,但是不能[][],最推荐的一种。不能[][]但是你可以通过[i*n+j]来计算 啊 //这种是1维数组转化为2维数组 int* a = new int[M*N]; // a[i*n+j]是a[i][j] delete[]a; //第三种 //内存不连续,可以[][],是第一种情况的特例,局限性比较大,比第一种好在能直接delete,方便 //如果你确实知道N是多少,那么可以用这种,比如说二维数组做形参的时候(此时内存连续),不是很推荐使用 int(*pNum)[N] = new int[M][N]; delete[] pNum; return 0; }

    转载自:http://jingyan.baidu.com/article/3c48dd34583e48e10be35895.html

    转载请注明原文地址: https://ju.6miu.com/read-971785.html

    最新回复(0)