Различать возвращаемое значение и ошибку в C - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь написать функцию, которая берет связанный список, индекс и возвращает значение в позиции индекса + 1.

int getData(list *l, int index) {
    if(...) { 
        ...
        return result; // this could be -1
    }

    else {
        return -1;
    }
}

В C вы возвращаете значение -1, когда функцияне удается (как способ сообщить пользователю, что вызов не выполнен из-за неправильного ввода). Тем не менее, поскольку возвращаемый тип этой функции - int, он включает значение -1 (-1 как число, а также задницу -2, -3 и т. Д.)

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

1 Ответ

4 голосов
/ 14 октября 2019

Верните значение, передав указатель, и сделайте возвращаемое значение ошибочным:

int getData(list *l, int inIndex, int* outIndex) {
    if(...) { 
        ...
        *outIndex = result;
        return 0;
    }

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