gpt4 book ai didi

c - Typedef 结构返回的值与 C 中存储的值不同

转载 作者:行者123 更新时间:2023-11-30 18:55:51 25 4
gpt4 key购买 nike

也许我使用的 typedef 结构完全错误,并且要问一个愚蠢的问题,所以如果是这种情况,请原谅。我有 Monster.h。

#ifndef MONSTER_H_
#define MONSTER_H_

typedef struct EnemyStats
{
int EnemyHP;
}EnemyStats;

int Monster(int Selection);
EnemyStats MonsterStats(int Selection);

#endif

然后我就有了 Monster.c

#include <stdio.h>
#include "Monster.h"

EnemyStats MonsterStats(int Selection)
{
EnemyStats value;
value.EnemyHP = 60;
return value;
}

现在请理解,目前我为了测试这个问题而简化了代码,最初我的 typedef 结构中有 3 个整数,并且在每个 int 中存储不同的数字后返回值。最后我有包含 main 函数的 Test.c 文件。

#include <stdio.h>
#include "Monster.h"

int main()
{
MonsterStats(1);
EnemyStats value;
printf("%d\n", value.EnemyHP);
}

在程序的三次单独运行中,我得到了值:

5226069

12000853

11939413

我真的找不到发生这种情况的任何地方,并且我不知道我到底做错了什么或者我是否滥用了该结构。感谢所有帮助。

最佳答案

问题出在您的 main 函数中。 EnemyStats value 结构永远不会被初始化,因此它只是堆栈中的随机内存。如果我错了请纠正我,但我相信你想要的是:

int main()
{
EnemyStats value = MonsterStats(1);
printf("%d\n", value.EnemyHP);
}

关于c - Typedef 结构返回的值与 C 中存储的值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com