如何使用指针访问嵌套结构的成员?

时间:2016-12-17 06:55:40

标签: c pointers structure

#include<stdio.h>
 struct date
 {
        struct time
        {
               int sec;
               int min;
               int hrs;
         };
        int day;
        int month;
        int year;
  };
int main(void)
{
     stuct date d,*dp=NULL;
     dp=&d;
}

现在使用结构指针dp我想访问结构时间sec的成员。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您需要在struct time中创建struct date类型的成员,然后才能从sec类型的对象访问struct time的{​​{1}}成员

您可以选择不为嵌套的struct date命名,但您需要一名成员。

struct

答案 1 :(得分:0)

嵌套结构基本上是结构内的结构。在您的示例中,memset(foo, 0, sizeof(foo)); struct time的成员。 访问结构成员的逻辑将保持不变。即您访问struct date的成员day的方式。

但是在这里你需要为struct date创建结构变量才能访问其成员。

如果要访问嵌套结构的成员,则它看起来像

struct time

您可以查看以下代码,

dp->time.sec // dp is a ptr to a struct date
d.time.sec   // d is structure variable of struct date

输出:

#include<stdio.h>
struct date
{
        struct time
        {
               int sec;
               int min;
               int hrs;
         }time;
        int day;
        int month;
        int year;
};

int main(void)
{
    struct date d = {1,2,3,4,5,6}, *dp;

    dp = &d;

    printf(" sec=%d\n min=%d\n hrs=%d\n day=%d\n month=%d\n year=%d\n",dp->time.sec, dp->time.min, dp->time.hrs, dp->day, dp->month, dp->year);


}