C++ 结构给出不正确的输出
当我编译这段代码时,当它应该是0时,我得到了10的输出C++ 结构给出不正确的输出,c++,struct,C++,Struct,当我编译这段代码时,当它应该是0时,我得到了10的输出 #include <iostream> struct player { int hp; int dmg; }; void dealdamage(player x, player y) { y.hp = y.hp - x.dmg; } int main() { player p1, p2; p1.hp = 10, p1.dmg = 10; p2.hp = 10, p2.dmg = 10; dealda
#include <iostream>
struct player
{
int hp;
int dmg;
};
void dealdamage(player x, player y)
{
y.hp = y.hp - x.dmg;
}
int main()
{
player p1, p2;
p1.hp = 10, p1.dmg = 10;
p2.hp = 10, p2.dmg = 10;
dealdamage(p1, p2);
std::cout << p2.hp << std::endl;
return 0;
}
#包括
结构播放器
{
int-hp;
int-dmg;
};
无效伤害(玩家x,玩家y)
{
y、 hp=y.hp-x.dmg;
}
int main()
{
播放器p1、p2;
p1.hp=10,p1.dmg=10;
p2.hp=10,p2.dmg=10;
破坏(p1,p2);
std::cout这是因为您正在按值传递player
结构
当参数按值传递时,将复制到被调用函数中。因此,在函数中所做的任何更改都不会影响原始值
因此,你的声明:
y.hp = y.hp - x.dmg;
仅影响x
和y
的本地副本。该副本超出范围,在函数结束后被丢弃
解决方案是按如下方式通过引用:
void dealdamage(player &x, player &y){
在此情况下,对<代码> x<代码>和 y>代码>的更改将影响原件。< /P>这是C++ 101。不,我正在等待一个。谢谢!我现在要去阅读指针和参考文献。