我正在创建一个简单的嵌套结构以了解它的运行过程。示例如下:
struct Employee
{
char ename[20];
int ssn;
float salary;
struct date
{
int date;
int month;
int year;
}doj;
}emp1;
在这种情况下,如果我想访问内部结构的成员,我需要做类似的事情
emp1.doj.date = 10;
但在上面的结构中,如果我省略了结构日期的变量声明,即 doj 并尝试单独声明它它不需要任何对 emp1 的引用,即
struct date doj;
编译器在这种情况下没有给出任何错误。我也可以在不引用 emp1 的情况下访问结构日期的成员
doj.date =15;
我只想知道这怎么可能?
最佳答案
在 C 中,内部结构没有特殊的作用域规则,这意味着 struct date
的作用域与 struct Employee
的作用域相同。您可以在任何可以声明外部结构类型的对象的地方自由声明内部结构类型的对象。
例如,这些声明与您的声明相同:
struct date
{
int date;
int month;
int year;
};
struct Employee
{
char ename[20];
int ssn;
float salary;
struct date doj;
}emp1;
关于c - 在不引用外部结构的情况下在嵌套结构中声明内部结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355057/