【问题标题】:Typedef struct returning different value than stored in CTypedef 结构返回的值与存储在 C 中的值不同
【发布时间】:2014-12-06 05:31:33
【问题描述】:

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

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

【问题讨论】:

    标签: c struct return printf typedef


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多