malloc 申请二维数组

来源:互联网 发布:绘画书籍推荐 知乎 编辑:程序博客网 时间:2024/05/16 07:53
函数打包版#include <malloc.h>#include <stdio.h>#define ROW   4#define LINE  5int ** getArray(int row, int line){    int **p = NULL;    int i =0;    p = (int**)malloc(sizeof(int*)*row);    for(; i<row; i++)        p[i] = (int*)malloc(sizeof(int)*line);    return p;}void freeArray(int **p, int row){    int i,j;    for(i=0; i<row; i++)        free(p[i]);    free(p);}int main(){    int **p2Array = getArray(ROW,LINE);    int i,j;    for(i=0; i<ROW; i++)    {        for(j=0; j<LINE; j++)        {            p2Array[i][j] = i+j;        }    }    for(i=0; i<ROW; i++)    {        for(j=0; j<LINE; j++)        {            printf("%d  ",p2Array[i][j]);        }        putchar(10);    }    freeArray(p2Array,ROW);    return 0;}-------------------------------------------------------------------------------------------------------------------------------#include <malloc.h>#include <stdio.h>#define ROW   4#define LINE  5int * getArray(int row, int line){    int *p = malloc(sizeof(int)*row*line);    return p;}void freeArray(int *p){    free(p);}int main(){    int (*p2Array)[LINE] = (int(*)[LINE]) getArray(ROW,LINE);    int i,j;    for(i=0; i<ROW; i++)    {        for(j=0; j<LINE; j++)        {            p2Array[i][j] = i+j;        }    }    for(i=0; i<ROW; i++)    {        for(j=0; j<LINE; j++)        {            printf("%d  ",p2Array[i][j]);        }        putchar(10);    }    freeArray(p2Array);    return 0;}


其本格式


#include <malloc.h>#include <stdio.h>int main(){    int (*a)[2] = malloc(sizeof(int)*3*2);    a[0][0] =1;    a[0][1] =2;    a[1][0] =3;    a[1][1] = 4;    a[2][0] =5;    a[2][1] = 6;    printf("%d\t%d\t%d\t%d\t%d\t%d\n",a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1]);     free(a);    system("pause");}  或者:#include <malloc.h>#include <stdio.h>int main(){    int **a = malloc(sizeof(int)*3);    a[0]= malloc(sizeof(int)*2);    a[1]= malloc(sizeof(int)*2);    a[2]= malloc(sizeof(int)*2);    a[0][0] =1;    a[0][1] =2;    a[1][0] =3;    a[1][1] = 4;    a[2][0] =5;    a[2][1] = 6;    printf("%d\t%d\t%d\t%d\t%d\t%d\n",a[0][0],a[0][1],a[1][0],a[1][1],a[2][0],a[2][1]);     free(a[0]);    free(a[1]);    free(a[2]);    free(a);    system("pause");}



1 0
原创粉丝点击