1. 程式人生 > >如何new與delete各種二維陣列

如何new與delete各種二維陣列

#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; }