返回值和C中的错误的区别

问题描述 投票:1回答:1

我正在尝试编写一个函数,该函数需要一个链表,一个索引并在index + 1位置返回值。

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

    else {
        return -1;
    }
}

在C中,当函数失败时,您将返回值-1(作为让用户知道由于输入错误而导致调用失败的一种方式)。但是,由于此函数的返回类型为int,因此它包含值-1(数字为-1,以及-2,-3等)

我的问题是:有没有一种机制可以让您从函数中返回并使函数的用户知道返回的值实际上是错误而不是值?

c pointers posix
1个回答
4
投票

通过传递指针来返回值并使返回值成为错误语句:

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

    else {
        return -1;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.