程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ 在堆上開拓與釋放二維、三維指針具體解析

C++ 在堆上開拓與釋放二維、三維指針具體解析

編輯:關於C++

C++ 在堆上開拓與釋放二維、三維指針具體解析。本站提示廣大學習愛好者:(C++ 在堆上開拓與釋放二維、三維指針具體解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++ 在堆上開拓與釋放二維、三維指針具體解析正文


進修C++老手平日會對指針的應用比擬頭疼,其實指針的概念很簡略,只需能悟清晰如許一個簡略的事理就可以對指針有必定的熟悉了: 例如 int *a = new int[10]; 一維指針其實就相當於一維數組,不消去看書上所說的數組在內存中的首地址這些艱澀的話,以此類推 二維指針就相當於二維數組,老手對一維數組的開拓與釋放比擬輕易熟習,例如下面的a 釋放就是 delete []a; a = NULL; 留意a = NULL; 必需要加上,如許是為了不這個指針會釀成“野指針”。寫法式時必定要留意標准性和嚴謹性,防止能夠會湧現的毛病。

//二維指針的開拓與釋放
int **b = NULL;
b = new int*[10];
for(int i = 0; i != 10; ++i)
{
     b[i] = new int[50];
     memset(b[i], 0, sizeof(int)*50);
}

//如許就在堆上開拓了int類型的二維指針,年夜小為10*50,相當於在堆上一個二棧數組int b[10][50];
for(int i = 0; i != 10; ++i)
{
     delete []b[i];
     b[i] = NULL;
}
delete []b;
b = NULL;

//三維指針的開拓與釋放
int ***a = NULL;
a = new int**[10];
for(int i = 0; i != 10; ++i)
{
    a[i] = new int*[50];
    for(int j = 0; j != 50; ++j)
    {
        a[i][j] = new int[30];
        memset(a[i][j], 0, sizeof(int)*30);
    }
}

//如許就在堆上開拓了int類型的三維指針,年夜小為10*50*30,相當於在棧上一個二維數組int a[10][50][30];
for(int i = 0; i != 10; ++i)
{
    for(int j = 0; j != 50; ++j)
    {
       delete []a[i][j];
       a[i][j] = NULL;          
    }
    delete []a[i];
    a[i] = NULL;
}
delete []a;
a = NULL;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved