如何从函数返回指向结构的指针?

时间:2015-10-22 22:56:22

标签: c pointers struct

我无法理解为什么编译器会给我以下错误:

  

level0.c:在函数'create_grid'中:level0.c:28:9:警告:返回   从不兼容的指针类型[-Wincompatible-pointer-types]返回   网格;

我正在尝试返回一个指向我在函数中创建类型struct gridType的结构的指针。这也是函数期望返回的类型。

该功能的代码是:

struct gridType* create_grid(int length){

    char** array = malloc(length * sizeof(*array));
    for(int i = 0; i < length; i++){
        array[i] = malloc(length * sizeof(array));
    }   

    for(int i = 0; i < length; i++){
        for (int j = 0; j < length; j++){
            array[i][j] = '-';
        }   
    }   

    struct gridType{
        int length; 
        char** array;
    };

    struct gridType* grid = malloc(sizeof(struct gridType));

    grid->length = length;
    grid->array = array;

    return grid;
}

1 个答案:

答案 0 :(得分:2)

您无法在功能中定义struct gridType并希望能够将其返回(供其他人查看)。

输入移动

struct gridType{
    int length; 
    char** array;
};

在函数create_grid()之外(之前)。