[英]How to modify a value of a struct within a function? [C]
讓我們以這段代碼為例
#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? 嘗試通過引用進行操作時,它會告訴我使用(“->”),但我真的真的不知道那是什么(我只使用了簡單的指針,這是我用指針處理過的唯一事情是動態內存分配)。
您需要使用指針而不是傳遞副本。 (也就是說,您應該編輯原始文件。)您可以像這樣進行修復:
#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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.