Возврат функции int ** в c - PullRequest
0 голосов
/ 30 мая 2018

Я борюсь с функцией int ** Solve ().Я нигде не нашел решения, или, может быть, не могу точно выразить свою проблему.Я не могу вернуть правильное значение, я всегда получаю ошибку компилятора или ошибку сегментации.Как инициализировать int ptr **, который я хочу вернуть из функции?Обратите внимание, что указан тип функции (int **), и я не могу его изменить.Я попытался использовать calloc, потому что, если я хотел вернуть что-то в строку int ptr [4] [4], он сказал, что я возвращаю локальную переменную.Я не знаю, что делать, и ptr не обязательно должен быть int ** возможно.Я просто хочу вернуть правильные элементы и с помощью возврата PTR.Мой код:

int** Solve(){
    int array[6][6];

    //some determining of array's elements...

    int **ptr=calloc(4,sizeof(int*));
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            ptr[i][j]=array[i+1][j+1];
        }
    }

    return ptr;
}

1 Ответ

0 голосов
/ 30 мая 2018

Я бы добавил комментарий к вашему вопросу, но мне не хватает репутации.

int r = 3, c = 4, i, j, count;

int **arr = (int **)malloc(r * sizeof(int *));
for (i=0; i<r; i++)
     arr[i] = (int *)malloc(c * sizeof(int));

Вот так должно выглядеть выделение 2d массива.

Разница между malloc и calloc заключается в том, что calloc инициализирует выделенную память нулем, поэтому в вашем случае они взаимозаменяемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...