首页 > 解决方案 > 区分C中的返回值和错误

问题描述

我正在尝试编写一个函数,该函数采用链表、索引并返回 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 等)

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

标签: cpointersposix

解决方案


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

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

    else {
        return -1;
    }
}

推荐阅读