c - 在不引用外部结构的情况下在嵌套结构中声明内部结构变量

标签 c struct

我正在创建一个简单的嵌套结构以了解它的运行过程。示例如下:

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/

相关文章:

c - 如何以编程方式确定 gstreamer 元素是否为 Bin?

c - 使用 %f 输出 EOF

c - 在调查中提取 winner/-s,然后打印

c - 使用 C 中的函数指针重新启动计算机

c - 如何为结构数组中的 char 字符串分配内存?

c - 创建线程时如何设置stack_size、stack_addr和guardsize

haskell - 如何在haskell中为 "unpack"结构

c - 将 sizeof() 与结构一起使用

c++ - 在另一个文件中访问 malloc 的函数

c - 获取结构体 vector 的索引号