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

▼魔方 西西 提交于 2019-11-29 23:41:15

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("\n");  

            printf("%d \t",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]<<"\t";   

        }

    }   

    //开始释放申请的堆   

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

        delete [] p[i];   

    }

    delete [] p;   

    return 0;

}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!