C - 从方法返回多个值

C - returning several values from method

我想return方法中的几个值:

unsigned long long *operand1, *operand2;
unsigned long long value1;
int operation=0;

我正在考虑将这些数据放入 char 数组中,然后逐字节检索它们。 这是一个好主意吗?我应该怎么做? 或者您能提出其他建议吗?

我建议使用 struct

struct my_struct {
    unsigned long long *operand1, *operand2;
    unsigned long long value1;
    int operation=0;
};

如果您使用的是 C++11,那么您可以使用 std::tuple。有关如何实施它的示例,请参阅参考资料 http://en.cppreference.com/w/cpp/utility/tuple

这比 struct 的优势在于您不需要为您想要 return.

的每组类型声明一个新对象

对于纯 C 代码,您可能希望拥有类似

的内容
typedef struct params_ {
    unsigned long long operand1, operand2;
    unsigned long long value1;
    int operation;
} params_t;

int foo(struct params_* p) {
    int retcode = 0;
    // do something with p along operation
    if(p->operation == 0) {
        p->value1 = 100 * p->operand1 + p->operand2;
    }
    else if(p->operation == 1) {
       // ...
    }
    // ...
    else {
        retcode = -1;
    }
    return retcode;
}

并像

一样使用它
int main(void) {
    params_t params;
    params.operation = 0;
    params.operand1 = 5;
    params.operand2 = 42;
    if(foo(&params) < 0) {
        // Error occurred
    }
    unsigned long long result = params.value1;
    return 0;
}

请看live demo here