我无法理解结构中变量的范围。例如:
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()中使用?
答案 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;
}