c/c++二级指针动态开辟内存

c版:

#include <stdio.h>

#include <stdlib.h>

 

#define row 4

#define col 8 

int main()

{

    int **p;   

    int i,j;   //p[4][8] 

    //开始分配4行8列的二维数据   

    

    p = malloc(sizeof(int *)*row);

    for(i=0;i<row;i++){

        p[i]= malloc(sizeof(int)*col);

    }

 //初始化

    for(i=0; i<row; i++){

        for(j=0; j<col; j++){

            p[i][j] = j*i;

        }

    }   

    //打印数据   

    for(i=0; i<row; i++){

        for(j=0; j<col; j++)     

        {   

            if(j==0) 

                printf("
");  

            printf("%d 	",p[i][j]);   

        }

    }   

    //开始释放申请的堆   

    for(i=0; i<row; i++){

        free(p[i]);   

    }

    free(p);   

    return 0;

}

c++版:

#include <iostream>

using namespace std;

 

int main()

{

    int **p;   

    int i,j;   //p[4][8] 

    //开始分配4行8列的二维数据   

    p = new int *[4];

    for(i=0;i<4;i++){

        p[i]=new int [8];

    }

 

    for(i=0; i<4; i++){

        for(j=0; j<8; j++){

            p[i][j] = j*i;

        }

    }   

    //打印数据   

    for(i=0; i<4; i++){

        for(j=0; j<8; j++)     

        {   

            if(j==0) cout<<endl;   

            cout<<p[i][j]<<"	";   

        }

    }   

    //开始释放申请的堆   

    for(i=0; i<4; i++){

        delete [] p[i];   

    }

    delete [] p;   

    return 0;

}
原文地址:https://www.cnblogs.com/lovebay/p/11539795.html