国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 在堆上開辟與釋放二維、三維指針詳細解析

2020-01-26 15:52:18
字體:
來源:轉載
供稿:網友

學習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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 栾川县| 鄂州市| 阜新市| 浦北县| 吴江市| 金坛市| 香港| 福州市| 洛扎县| 灯塔市| 诸城市| 璧山县| 乌恰县| 汾阳市| 龙海市| 武川县| 濉溪县| 金阳县| 扶沟县| 烟台市| 吉首市| 甘洛县| 新野县| 阳原县| 曲靖市| 汾阳市| 二连浩特市| 奎屯市| 临汾市| 南澳县| 怀化市| 兴文县| 云安县| 云梦县| 东阳市| 观塘区| 象山县| 平武县| 宁南县| 黔西县| 昭苏县|