繁体   English   中英

在C中的函数外部访问结构变量

[英]Accessing struct variables outside of function in C

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

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是否仅在void setName()中设置为“ thomas”? 我将如何做到这一点,如果我将值赋给struct变量,则该值可以全局访问。 如果要在int main()中打印出变量名,它将为空,如何使它打印出“托马斯”? 还是仅在setName()函数中可行?

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

是。 这就是局部变量如何工作的本质

如果我给结构变量赋值,该值可以全局访问,我该如何做到?

使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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM