在C中访问函数之外的struct变量

时间:2014-10-29 19:33:11

标签: c variables pointers struct

我无法理解结构中变量的范围。例如:

struct Class 
{
const char *name;
int Hitdice, Str_Dice, Dex_Dice, Con_Dice, Int_dice, Wis_Dice, Cha_Dice, Skill_Points, level;
double BAB_Type;
struct Class *next_Class;
};

void setName()
{
struct Class setName;
setName.name = "thomas";
}

int main()
{

}

变量* name是否仅设置为" thomas"在void setName()中?如何为结构变量赋值,以便全局访问该值,我将如何制作它。如果我要在int main()中打印出变量名,那么它将是空白的,我将如何打印出来#34; thomas"?或者只能在函数setName()中使用?

1 个答案:

答案 0 :(得分:2)

  

变量name仅在"thomas"内设置为void setName()吗?

是。这是局部变量工作原理的本质

  

如何为结构变量赋值,使得该值可以全局访问?

通过将外部 struct Class setName;函数声明为setName全局。我建议给它一个不同的名字 - 比如theClass

您还应该更改setName以获取您要设置名称的名称和struct Class

  

如果我要在int main()中打印出变量名,那么它将是空白的,我将如何将其打印出来"thomas"

setName()功能之外移动声明后,您就可以从任何您喜欢的位置访问它。

struct Class {
    const char *name;
    int Hitdice, Str_Dice, Dex_Dice, Con_Dice, Int_dice, Wis_Dice, Cha_Dice, Skill_Points, level;
    double BAB_Type;
    struct Class *next_Class;
} theClass;

void setName(struct Class *myClass, const char* theName) {
    myClass->name = theName;
}

int main() {
    setName(&theClass, "thomas");
    printf("%s\n", theClass.name);
    return 0;
}