C返回多个值

标签 c arrays function return

所以我想返回

monsterstat[4] = {monsterhp, monsteratkmin,monsteratkmax,monstermax};
return monsterstat;

这可以用另一个具有相同大小的数组接收该值吗? 观察:

    double monsterstat[4];

最佳答案

使用结构体

创建一个包含所有字段的结构

typedef struct MonsterStat {
   int monsterhp;
   int monsteratkmin;
   int monsteratkmax;
   int monstermax;
} MonsterStat;

现在声明一个变量

MonsterStat monsterstat;

初始化成员变量有多种方式

// In order
MonsterStat monsterstat = {60, 12, 14, 60};

// Specifying fields

MonsterStat monsterstat = {
  .monsterhp = 60,
  .monsteratkmin = 12,
  .monsteratkmax = 14,
  .monstermax = 60
};

在函数中使用结构体

// Level up the monster
MonsterStat level_up(MonsterStat monsterstat){
  monsterstat.monsterhp += 10;
  monsterstat.monstermax += 12;
  return monsterstat;
}

// Return a default monster
MonsterStat default(){
  MonsterStat monsterstat = {60, 12, 14, 60};
  return monsterstat;
}

返回数组

(正确地)“返回”数组的唯一方法是接收指向已分配数组的指针并更改元素。数组本身无法传递。仅真正传递指针(指向内存中的数组)。

当然,您可能会这样做,在函数中分配一个数组,然后返回指向该数组的指针,这确实是错误的。您现在已经暴露了堆栈溢出的风险(这里没有双关语,这是该网站的同名名称)。

关于C返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845113/

相关文章:

JavaScript 函数应该返回数组

c - MSDN(所有者绘制)列表框控件滚动后卡住

c++ - 反转链表 - C++

javascript - 如何获取对象的方法?

arrays - R中的不规则数组子集化

javascript - 在 jquery deferred 解析请求数组后总是调用一个 Action

java - 在Java中显示带有括号和逗号的数组输出?

c - 我正在用C语言制作linux命令程序。我想知道代码出了什么问题?

c - 如何解释 strace 输出?

c++ - 错误: invalid conversion from 'char' to 'const char*' [-fpermissive]|