我可以为C中的变量传递多个值吗?

时间:2014-10-22 10:55:02

标签: c arrays variables

我可以为C中的变量传递多个值吗?

按照下面的示例,这或多或少是我所说的。

int mage;//Normal variable create OK   
int mage{int hp, int mp}

我现在正在学习C,我想制作一个基于RPG的文本,我不希望创建基于世界的最好和最美丽的RPG文本,但它只是学习。

如果没有人在这里理解我的问题,那就是简历:创建一个变量并为此变量传递2个或更多值。

4 个答案:

答案 0 :(得分:2)

是的,C支持允许您定义将其他类型的值组合在一起的新类型的结构。使用关键字struct并提供名称来声明新的结构类型。然后,新类型的名称为struct,后跟该名称。

例如:

struct character
{
  int hp;
  int mp;
};

struct character mage = { 42, 4711 };

最后一行创建一个名为mage且类型为struct character的变量,并将mage.hp初始化为42,将mage.mp初始化为4711。< / p>

以下是访问变量hp的字段mage的方式:

printf("The HP of the mage is %d\n", mage.hp);

答案 1 :(得分:1)

定义为:

typedef struct {
 int hp;
 int mp;
} mage;

用作:

mage m;

访问为:

m.hp = 2;
m.mp = 3;

答案 2 :(得分:1)

如果您想将多个值分组到单个变量中,最简单的方法是使用struct

这允许您对值进行逻辑分组。

在您的示例中,您可以执行以下操作:

struct SAttribute {
    int current;
    int maximum;
};
typedef struct SAttribute Attribute;

struct SCharacter {
    Attribute health;
    Attribute mana;
};
typedef struct SCharacter Character;

请注意,typedef是可选的,只是为了避免不得不一遍又一遍地写struct

在您的实际程序中,您可以像这样使用它们:

Character mage;
mage.health.current = mage.health.maximum = 100;

// damage the mage
mage.health.current -= 5;

// is the mage dead?
if (mage.health.current <= 0)
    printf("The mage is dead.");

答案 3 :(得分:1)

我不确定是否可以将多个值传递给变量,但我建议您创建一个 struct

typedef struct mage mage;
// define a struct
struct mage {
    int hp;
    int mp;
};

struct mage m = {100, 50};

// now we can access the values
m.hp
m.mp