C - 从方法

时间:2015-05-03 20:41:33

标签: c arrays char

我想从方法中返回几个值:

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

我正在考虑将这些数据放在char数组中,然后逐字节地检索它们。 这是一个好主意吗?我该怎么做? 或者你可以提出别的建议吗?

3 个答案:

答案 0 :(得分:2)

我建议使用struct

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

答案 1 :(得分:2)

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

这比[{1}}更有优势,您不需要为要返回的每组类型声明一个新对象。

答案 2 :(得分:1)

使用普通的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