也许我正在使用一个完全错误的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中存储不同的数字后返回值。最后我有我的Test.c文件包含main函数。
#include <stdio.h>
#include "Monster.h"
int main()
{
MonsterStats(1);
EnemyStats value;
printf("%d\n", value.EnemyHP);
}
在程序的三个单独运行中,我得到了值:
5226069
12000853
11939413
我真的找不到任何发生的事情,我也不知道我做错了什么,或者我是否误用了这个结构。所有帮助表示赞赏。
答案 0 :(得分:2)
问题出在您的main
功能中。 EnemyStats value
结构永远不会被初始化,因此它只是堆栈中的随机内存。如果我错了,请纠正我,但我相信你想要的是:
int main()
{
EnemyStats value = MonsterStats(1);
printf("%d\n", value.EnemyHP);
}