Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从函数返回2个数字_C_Arrays_Function_If Statement_Return - Fatal编程技术网

C 如何从函数返回2个数字

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[

我必须将下面的代码复制粘贴到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[0];
} else {
    item_used = FALSE; 
}

您可以返回两个数字的数组。

有两种常用方法:

  • 创建一个包含两个
    int
    成员的
    struct
    ,以从函数返回该成员
    -当返回的两个值易于复制时(例如一对
    int
    s,或
  • 为一个或两个变量取一个指针-这可以避免复制,但需要调用者预先为结果分配存储
以下是第一种方法的示例:

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 */   
}