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

时间:2014-10-11 00:05:55

标签: c struct return printf typedef

也许我正在使用一个完全错误的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

我真的找不到任何发生的事情,我也不知道我做错了什么,或者我是否误用了这个结构。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

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

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