gpt4 book ai didi

c++ - 显示指针结构中的元素

转载 作者:行者123 更新时间:2023-11-30 05:26:26 24 4
gpt4 key购买 nike

我遇到了一个小问题,我到处找了找,但我相信我找错了方向。我在这里创建了一个帐户,希望能解决我遇到的一个小问题。我正在编写一个角色扮演游戏,当我试图显示一个字符“魔法咒语”时,我只能显示 [3]。 [0] [1] [2] 使我的游戏崩溃。游戏使用 C++。

我的代码示例如下:

创建我的结构:

struct Fighter {
int HP; //max 999
int maxHP;
int MP; //max 999
int maxMP;
int STR; //max 255
int CON; //max 255
int AGL; //max 100
bool dead;
const char* Magic[];
};

Fighter * player = new Fighter[5];

使用这些参数为 4 个党员初始化和分配元素:

void InitPlayer(int pClass, int p)
{
if(pClass == 0) //Knight
{
player[p].maxHP = 750;
player[p].HP = player[p].maxHP;
player[p].maxMP = 0;
player[p].MP = player[p].maxMP;
player[p].STR = 200;
player[p].CON = 0;
player[p].AGL = 35;
}
else if(pClass == 1) //Ninja
{
player[p].maxHP = 675;
player[p].HP = player[p].maxHP;
player[p].maxMP = 0;
player[p].MP = player[p].maxMP;
player[p].STR = 175;
player[p].CON = 0;
player[p].AGL = 80;
player[p].Magic[0] = "Cure";
player[p].Magic[1] = "Haste";
player[p].Magic[2] = "Sleep";
}
//... More Character code
}

这里我在屏幕上绘制/打印“魔法”:

Printf_xy(123,223,player[0].Magic[0]);  //Crash
Printf_xy(123,233,player[1].Magic[0]); //Crash
Printf_xy(123,243,player[2].Magic[0]); //Crash
Printf_xy(123,253,player[3].Magic[0]); //Prints "Cure" does not crash

如您所见,它会起作用,但前提是我显示播放器[3]。我确定我忘记做某事或错误地初始化了某些东西。任何帮助将不胜感激。

最佳答案

Magic 是一个零长度数组 - 当您向其中分配任何内容,甚至尝试访问 Magic[0] 时,您正在访问数组边界之外。

如果您知道所需的魔法条目的最大数量,请将其用作数组大小,例如:

const int MagicLimit = 10

...

const char* Magic[MagicLimit];

更好的是,如果您使用的是 C++,请使用 std::vector 来保存魔法字符串(也可以使用 std::string),这样您就可以轻松地知道列表的长度。

例如:

std::vector<std::string> Magic;

关于c++ - 显示指针结构中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780589/

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