Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.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++ 结构给出不正确的输出_C++_Struct - Fatal编程技术网

C++ 结构给出不正确的输出

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

当我编译这段代码时,当它应该是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;
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。不,我正在等待一个。谢谢!我现在要去阅读指针和参考文献。