所以我想返回
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/