我想从方法中返回几个值:
unsigned long long *operand1, *operand2;
unsigned long long value1;
int operation=0;
我正在考虑将这些数据放在char数组中,然后逐字节地检索它们。 这是一个好主意吗?我该怎么做? 或者你可以提出别的建议吗?
答案 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(¶ms) < 0) {
// Error occurred
}
unsigned long long result = params.value1;
return 0;
}