C 如何从函数返回2个数字
我必须将下面的代码复制粘贴到3个单独的函数中(果汁函数、牛奶函数和购买函数)。所以我想,为什么不制作另一个名为array_checker的函数,并在toe juice,milk and buy函数中调用它,而不是复制粘贴代码。但是,函数(复制粘贴的代码)需要返回两个内容。int item_used和int buy_now。我该怎么做 这是我复制粘贴的代码:C 如何从函数返回2个数字,c,arrays,function,if-statement,return,C,Arrays,Function,If Statement,Return,我必须将下面的代码复制粘贴到3个单独的函数中(果汁函数、牛奶函数和购买函数)。所以我想,为什么不制作另一个名为array_checker的函数,并在toe juice,milk and buy函数中调用它,而不是复制粘贴代码。但是,函数(复制粘贴的代码)需要返回两个内容。int item_used和int buy_now。我该怎么做 这是我复制粘贴的代码: if (item_sale == 1) { item_used = TRUE; buy_now = legal_cards[
if (item_sale == 1) {
item_used = TRUE;
buy_now = legal_cards[0];
} else {
item_used = FALSE;
}
您可以返回两个数字的数组。有两种常用方法:
- 创建一个包含两个
成员的int
,以从函数返回该成员-当返回的两个值易于复制时(例如一对struct
s,或int
- 为一个或两个变量取一个指针-这可以避免复制,但需要调用者预先为结果分配存储
struct buy_decision {
int item_used;
int buy_now;
};
buy_decision milk(...) {
buy_decision res;
if (item_sale == 1) {
res.item_used = TRUE;
res.buy_now = legal_cards[0];
} else {
res.item_used = FALSE;
res.buy_now = 0;
}
return res;
}
下面是指针采用的第二种方法的示例:
int milk(..., int* buy_now_ptr) {
if (item_sale == 1) {
*buy_now_ptr = legal_cards[0];
return TRUE;
}
return FALSE;
}
您必须定义要返回的结构:
struct itemStuff {
int itemUsed;
int buy_now;
}
然后
函数的调用方必须创建相同的结构才能接收返回数据
struct itemStuff thisItem = myItemFunction(...);
或者使用“按引用传递”传入可修改的参数
void myItemFunction(..., int *item_used, int *buy_noe) {
if (item_sale == 1) {
*item_used = TRUE;
*buy_now = legal_cards[0];
} else {
*item_used = FALSE;
}
}
在这里,调用方必须传入要设置的两个整数的地址:
int used;
int buy;
myItemFunction(..., &used, &buy);
要从一个函数返回多个值,请创建一个结构,将任意成员放入其中并返回结构变量。例如
typedef struct buy_fun_info {
int item_used;
int buy_now;
}BUY;
在array\u checker()
函数中,创建上述结构的变量,填充并返回这些成员。例如
BUY array_checker() { /*array_checker() function */
BUY obj;
obj.buy_now = legal_cards[0];
obj.item_used = FALSE;
return obj;/* return structure variable */
}
上面我试图用示例解释,您需要进行相应的修改。可能的重复项不能返回C中的数组。
BUY array_checker() { /*array_checker() function */
BUY obj;
obj.buy_now = legal_cards[0];
obj.item_used = FALSE;
return obj;/* return structure variable */
}