2015-10-22 2 views
1

У меня возникают проблемы с пониманием, почему компилятор дает мне следующую ошибку:Как вернуть указатель на структуру из функции?

level0.c: In function ‘create_grid’: level0.c:28:9: warning: return from incompatible pointer type [-Wincompatible-pointer-types] return grid;

Я пытаюсь вернуть указатель на структуру, которую я создал из структуры 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; 
} 

ответ

2

Вы не можете определить struct gridType внутри вашей функции и ожидать, чтобы быть в состоянии вернуть его (для других людей, чтобы увидеть).

Тип перемещения

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

Снаружи (перед) функция create_grid().

+0

спасибо, что сделал решение проблемы. – pinnockf

Смежные вопросы