簡體   English   中英

如何在函數內修改結構的值? [C]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM