首页 > 解决方案 > Ciki boyutlu dizi Malloc

问题描述

我不知道我错在哪里,我得到分段错误错误。你能帮我吗?

我的代码;

#include <stdio.h>
#include <stdlib.h>

void do_array(int x, int y, int **arr){
    arr=(int **)malloc(sizeof(int)*x);
    for (int i=0;i<y;i++){
        *(arr+i)=(int *)malloc(sizeof(int)*y);
    }
}

int main(){
    int **p;
    do_array(5,2,p);
    for (int i=0;i<5;i++){
        for (int j=0;j<2;j++){
            *(*(p+i)+j)=i;
        }
    }
    for (int i=0;i<5;i++){
        for (int j=0;j<2;j++){
            printf("%d\n",*(*(p+i)+j));
        }
    }
    return 0;
}

!!!我想做的是创建一个动态二维数组

标签: arrayscmalloc

解决方案


int main(){
    int **p /* = NULL */ ;         // p is garbage       or NULL
    do_array(5,2,p);               // p is still garbage or NULL
    for (int i=0;i<5;i++){
        for (int j=0;j<2;j++){
            *(*(p+i)+j)=i;         // p is still garbage or NULL

推荐阅读