我们将此代码视为示例
#include <stdio.h>
typedef struct
{
int hp;
}Player;
void lessHp(Player a)
{
printf("a.hp = %d\n", a.hp);
(*Player) -> hp -= 1;
printf("a.hp now = %d\n", a.hp);
}
int main()
{
Player a;
a.hp = 1;
lessHp(a);
printf("a.hp = %d\n", a.hp);
return 0;
}
现在,这个程序打印的是:
a.hp = 1
a.hp now = 0
a.hp = 1
但是我怎样才能使lessHp函数实际上能够从该值中减去1?当试图通过引用来做它时它告诉我使用(“ - &gt;”),但我真的,真的不知道那是什么(我只使用简单的指针,我唯一处理过的事情指针是动态内存分配)。
答案 0 :(得分:2)
您需要使用指针而不是传递副本。 (那就是你应该编辑原作。)你可以像这样修复:
#include <stdio.h>
typedef struct
{
int hp;
} Player;
void lessHp(Player* a)
{
printf("a.hp = %d\n", a->hp);
a->hp -= 1;
printf("a.hp now = %d\n", a->hp);
}
int main()
{
Player a;
a.hp = 1;
lessHp(&a);
printf("a.hp = %d\n", a.hp);
return 0;
}
输出为:
a.hp = 1
a.hp now = 0
a.hp = 0