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;irow;i++){p[i]= mall...

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;

}

 

本文标题为:c/c++二级指针动态开辟内存

基础教程推荐