C分割故障打印2d阵列

C分割故障打印2d阵列,c,multidimensional-array,segmentation-fault,C,Multidimensional Array,Segmentation Fault,当我试图调用函数createplaydy,该函数应该以C语言向控制台打印一个2D数组时,我得到了一个分段错误。我不知道怎么了 #include<stdio.h> #include<stdlib.h> void createPlayground(int, int **); void printPlayground(int, int **); int main() { int size = 8; int **playground; createP

当我试图调用函数
createplaydy
,该函数应该以C语言向控制台打印一个2D数组时,我得到了一个分段错误。我不知道怎么了

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

void createPlayground(int, int **);
void printPlayground(int, int **);

int main() {
    int size = 8;
    int **playground;

    createPlayground(size, playground);

    printPlayground(size, playground);

    return 0;
}

void createPlayground(int size, int **array) {
    array = (int **) malloc(size * sizeof(int *));
    for (int i = 0; i < size; ++i) {
    array[i] = (int *) calloc(size, sizeof(int));
    }
}

void printPlayground(int size, int **array) {
    for (int i = 0; i < size; ++i) {
        for (int j = 0; j < size; ++j){
            printf("%d  ", array[i][j]);
        }
        printf("\n");
    }
}
#包括
#包括
虚空(整数,整数**);
无效打印场(整数,整数**);
int main(){
int size=8;
国际**游乐场;
创建操场(大小、操场);
打印操场(尺寸、操场);
返回0;
}
void CreatePlayerd(整数大小,整数**数组){
数组=(int**)malloc(size*sizeof(int*);
对于(int i=0;i
您需要向
CreatePlayerly
添加另一个间接级别:

void createPlayground(int size, int ***array) {
    *array = (int **)malloc(size * sizeof(int *));
    for (int i = 0; i < size; ++i) {
        (*array)[i] = (int *)calloc(size, sizeof(int));
    }
}

请注意,
printplayed
可以使用其当前签名,因为它不会修改指针。

请记住:在C中,参数是按值传递的。调用方看不到在函数中为参数指定的任何内容。
createPlayground(size, &playground);